Lines Matching refs:driver
77 struct ns2_phy_driver *driver;
89 struct ns2_phy_driver *driver)
93 return readl_poll_timeout_atomic(driver->icfgdrd_regs + usb_reg,
101 struct ns2_phy_driver *driver = data->driver;
104 val = readl(driver->icfgdrd_regs + ICFG_FSM_CTRL);
113 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
121 struct ns2_phy_driver *driver = data->driver;
124 val = readl(driver->crmu_usb2_ctrl);
126 writel(val, driver->crmu_usb2_ctrl);
128 val = readl(driver->crmu_usb2_ctrl);
130 writel(val, driver->crmu_usb2_ctrl);
133 val = readl(driver->icfgdrd_regs + ICFG_FSM_CTRL);
135 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
143 struct ns2_phy_driver *driver = data->driver;
149 writel(DRD_DEV_VAL, driver->icfgdrd_regs + ICFG_DRD_P0CTL);
151 val = readl(driver->idmdrd_rst_ctrl);
153 writel(val, driver->idmdrd_rst_ctrl);
155 val = readl(driver->crmu_usb2_ctrl);
157 writel(val, driver->crmu_usb2_ctrl);
160 val = readl(driver->crmu_usb2_ctrl);
162 writel(val, driver->crmu_usb2_ctrl);
164 ret = pll_lock_stat(ICFG_MISC_STAT, PHY_PLL_LOCK, driver);
170 writel(DRD_HOST_VAL, driver->icfgdrd_regs + ICFG_DRD_P0CTL);
172 val = readl(driver->crmu_usb2_ctrl);
174 writel(val, driver->crmu_usb2_ctrl);
176 ret = pll_lock_stat(ICFG_MISC_STAT, PHY_PLL_LOCK, driver);
182 val = readl(driver->idmdrd_rst_ctrl);
184 writel(val, driver->idmdrd_rst_ctrl);
187 val = readl(driver->usb2h_strap_reg);
189 writel(val, driver->usb2h_strap_reg);
195 static void connect_change(struct ns2_phy_driver *driver)
200 extcon_event = driver->data->new_state;
201 val = readl(driver->icfgdrd_regs + ICFG_FSM_CTRL);
206 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
209 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
211 val = readl(driver->icfgdrd_regs + ICFG_DRD_P0CTL);
213 writel(val, driver->icfgdrd_regs + ICFG_DRD_P0CTL);
218 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
221 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
223 val = readl(driver->usb2h_strap_reg);
225 writel(val, driver->usb2h_strap_reg);
227 val = readl(driver->icfgdrd_regs + ICFG_DRD_P0CTL);
229 writel(val, driver->icfgdrd_regs + ICFG_DRD_P0CTL);
240 struct ns2_phy_driver *driver;
244 driver = container_of(to_delayed_work(work),
247 id = gpiod_get_value_cansleep(driver->id_gpiod);
248 vbus = gpiod_get_value_cansleep(driver->vbus_gpiod);
251 extcon_set_state_sync(driver->edev, EXTCON_USB_HOST, true);
253 driver->data->new_state = EVT_HOST;
254 connect_change(driver);
256 extcon_set_state_sync(driver->edev, EXTCON_USB_HOST, false);
257 extcon_set_state_sync(driver->edev, EXTCON_USB, false);
260 extcon_set_state_sync(driver->edev, EXTCON_USB, true);
262 driver->data->new_state = EVT_DEVICE;
263 connect_change(driver);
269 struct ns2_phy_driver *driver = dev_id;
271 queue_delayed_work(system_power_efficient_wq, &driver->wq_extcon,
272 driver->debounce_jiffies);
294 struct ns2_phy_driver *driver;
300 driver = devm_kzalloc(dev, sizeof(struct ns2_phy_driver),
302 if (!driver)
305 driver->data = devm_kzalloc(dev, sizeof(struct ns2_phy_data),
307 if (!driver->data)
311 driver->icfgdrd_regs = devm_ioremap_resource(dev, res);
312 if (IS_ERR(driver->icfgdrd_regs))
313 return PTR_ERR(driver->icfgdrd_regs);
316 driver->idmdrd_rst_ctrl = devm_ioremap_resource(dev, res);
317 if (IS_ERR(driver->idmdrd_rst_ctrl))
318 return PTR_ERR(driver->idmdrd_rst_ctrl);
321 driver->crmu_usb2_ctrl = devm_ioremap_resource(dev, res);
322 if (IS_ERR(driver->crmu_usb2_ctrl))
323 return PTR_ERR(driver->crmu_usb2_ctrl);
326 driver->usb2h_strap_reg = devm_ioremap_resource(dev, res);
327 if (IS_ERR(driver->usb2h_strap_reg))
328 return PTR_ERR(driver->usb2h_strap_reg);
331 driver->id_gpiod = devm_gpiod_get(&pdev->dev, "id", GPIOD_IN);
332 if (IS_ERR(driver->id_gpiod)) {
334 return PTR_ERR(driver->id_gpiod);
336 driver->vbus_gpiod = devm_gpiod_get(&pdev->dev, "vbus", GPIOD_IN);
337 if (IS_ERR(driver->vbus_gpiod)) {
339 return PTR_ERR(driver->vbus_gpiod);
342 driver->edev = devm_extcon_dev_allocate(dev, usb_extcon_cable);
343 if (IS_ERR(driver->edev)) {
348 ret = devm_extcon_dev_register(dev, driver->edev);
354 ret = gpiod_set_debounce(driver->id_gpiod, GPIO_DELAY * 1000);
356 driver->debounce_jiffies = msecs_to_jiffies(GPIO_DELAY);
358 INIT_DELAYED_WORK(&driver->wq_extcon, extcon_work);
360 driver->id_irq = gpiod_to_irq(driver->id_gpiod);
361 if (driver->id_irq < 0) {
363 return driver->id_irq;
366 driver->vbus_irq = gpiod_to_irq(driver->vbus_gpiod);
367 if (driver->vbus_irq < 0) {
369 return driver->vbus_irq;
372 ret = devm_request_irq(dev, driver->id_irq, gpio_irq_handler,
374 "usb_id", driver);
380 ret = devm_request_irq(dev, driver->vbus_irq, gpio_irq_handler,
382 "usb_vbus", driver);
388 dev_set_drvdata(dev, driver);
391 val = readl(driver->crmu_usb2_ctrl);
393 writel(val, driver->crmu_usb2_ctrl);
395 data = driver->data;
402 data->driver = driver;
411 platform_set_drvdata(pdev, driver);
414 queue_delayed_work(system_power_efficient_wq, &driver->wq_extcon,
415 driver->debounce_jiffies);
422 .driver = {
431 MODULE_DESCRIPTION("Broadcom NS2 USB2 PHY driver");