Lines Matching refs:driver

67 	struct ns2_phy_driver *driver;
79 struct ns2_phy_driver *driver)
83 return readl_poll_timeout_atomic(driver->icfgdrd_regs + usb_reg,
91 struct ns2_phy_driver *driver = data->driver;
94 val = readl(driver->icfgdrd_regs + ICFG_FSM_CTRL);
103 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
111 struct ns2_phy_driver *driver = data->driver;
114 val = readl(driver->crmu_usb2_ctrl);
116 writel(val, driver->crmu_usb2_ctrl);
118 val = readl(driver->crmu_usb2_ctrl);
120 writel(val, driver->crmu_usb2_ctrl);
123 val = readl(driver->icfgdrd_regs + ICFG_FSM_CTRL);
125 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
133 struct ns2_phy_driver *driver = data->driver;
139 writel(DRD_DEV_VAL, driver->icfgdrd_regs + ICFG_DRD_P0CTL);
141 val = readl(driver->idmdrd_rst_ctrl);
143 writel(val, driver->idmdrd_rst_ctrl);
145 val = readl(driver->crmu_usb2_ctrl);
147 writel(val, driver->crmu_usb2_ctrl);
150 val = readl(driver->crmu_usb2_ctrl);
152 writel(val, driver->crmu_usb2_ctrl);
154 ret = pll_lock_stat(ICFG_MISC_STAT, PHY_PLL_LOCK, driver);
160 writel(DRD_HOST_VAL, driver->icfgdrd_regs + ICFG_DRD_P0CTL);
162 val = readl(driver->crmu_usb2_ctrl);
164 writel(val, driver->crmu_usb2_ctrl);
166 ret = pll_lock_stat(ICFG_MISC_STAT, PHY_PLL_LOCK, driver);
172 val = readl(driver->idmdrd_rst_ctrl);
174 writel(val, driver->idmdrd_rst_ctrl);
177 val = readl(driver->usb2h_strap_reg);
179 writel(val, driver->usb2h_strap_reg);
185 static void connect_change(struct ns2_phy_driver *driver)
190 extcon_event = driver->data->new_state;
191 val = readl(driver->icfgdrd_regs + ICFG_FSM_CTRL);
196 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
199 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
201 val = readl(driver->icfgdrd_regs + ICFG_DRD_P0CTL);
203 writel(val, driver->icfgdrd_regs + ICFG_DRD_P0CTL);
208 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
211 writel(val, driver->icfgdrd_regs + ICFG_FSM_CTRL);
213 val = readl(driver->usb2h_strap_reg);
215 writel(val, driver->usb2h_strap_reg);
217 val = readl(driver->icfgdrd_regs + ICFG_DRD_P0CTL);
219 writel(val, driver->icfgdrd_regs + ICFG_DRD_P0CTL);
230 struct ns2_phy_driver *driver;
234 driver = container_of(to_delayed_work(work),
237 id = gpiod_get_value_cansleep(driver->id_gpiod);
238 vbus = gpiod_get_value_cansleep(driver->vbus_gpiod);
241 extcon_set_state_sync(driver->edev, EXTCON_USB_HOST, true);
243 driver->data->new_state = EVT_HOST;
244 connect_change(driver);
246 extcon_set_state_sync(driver->edev, EXTCON_USB_HOST, false);
247 extcon_set_state_sync(driver->edev, EXTCON_USB, false);
250 extcon_set_state_sync(driver->edev, EXTCON_USB, true);
252 driver->data->new_state = EVT_DEVICE;
253 connect_change(driver);
259 struct ns2_phy_driver *driver = dev_id;
261 queue_delayed_work(system_power_efficient_wq, &driver->wq_extcon,
262 driver->debounce_jiffies);
284 struct ns2_phy_driver *driver;
289 driver = devm_kzalloc(dev, sizeof(struct ns2_phy_driver),
291 if (!driver)
294 driver->data = devm_kzalloc(dev, sizeof(struct ns2_phy_data),
296 if (!driver->data)
299 driver->icfgdrd_regs = devm_platform_ioremap_resource_byname(pdev, "icfg");
300 if (IS_ERR(driver->icfgdrd_regs))
301 return PTR_ERR(driver->icfgdrd_regs);
303 driver->idmdrd_rst_ctrl = devm_platform_ioremap_resource_byname(pdev, "rst-ctrl");
304 if (IS_ERR(driver->idmdrd_rst_ctrl))
305 return PTR_ERR(driver->idmdrd_rst_ctrl);
307 driver->crmu_usb2_ctrl = devm_platform_ioremap_resource_byname(pdev, "crmu-ctrl");
308 if (IS_ERR(driver->crmu_usb2_ctrl))
309 return PTR_ERR(driver->crmu_usb2_ctrl);
311 driver->usb2h_strap_reg = devm_platform_ioremap_resource_byname(pdev, "usb2-strap");
312 if (IS_ERR(driver->usb2h_strap_reg))
313 return PTR_ERR(driver->usb2h_strap_reg);
316 driver->id_gpiod = devm_gpiod_get(&pdev->dev, "id", GPIOD_IN);
317 if (IS_ERR(driver->id_gpiod)) {
319 return PTR_ERR(driver->id_gpiod);
321 driver->vbus_gpiod = devm_gpiod_get(&pdev->dev, "vbus", GPIOD_IN);
322 if (IS_ERR(driver->vbus_gpiod)) {
324 return PTR_ERR(driver->vbus_gpiod);
327 driver->edev = devm_extcon_dev_allocate(dev, usb_extcon_cable);
328 if (IS_ERR(driver->edev)) {
333 ret = devm_extcon_dev_register(dev, driver->edev);
339 ret = gpiod_set_debounce(driver->id_gpiod, GPIO_DELAY * 1000);
341 driver->debounce_jiffies = msecs_to_jiffies(GPIO_DELAY);
343 INIT_DELAYED_WORK(&driver->wq_extcon, extcon_work);
345 driver->id_irq = gpiod_to_irq(driver->id_gpiod);
346 if (driver->id_irq < 0) {
348 return driver->id_irq;
351 driver->vbus_irq = gpiod_to_irq(driver->vbus_gpiod);
352 if (driver->vbus_irq < 0) {
354 return driver->vbus_irq;
357 ret = devm_request_irq(dev, driver->id_irq, gpio_irq_handler,
359 "usb_id", driver);
365 ret = devm_request_irq(dev, driver->vbus_irq, gpio_irq_handler,
367 "usb_vbus", driver);
373 dev_set_drvdata(dev, driver);
376 val = readl(driver->crmu_usb2_ctrl);
378 writel(val, driver->crmu_usb2_ctrl);
380 data = driver->data;
387 data->driver = driver;
396 platform_set_drvdata(pdev, driver);
399 queue_delayed_work(system_power_efficient_wq, &driver->wq_extcon,
400 driver->debounce_jiffies);
407 .driver = {
416 MODULE_DESCRIPTION("Broadcom NS2 USB2 PHY driver");