Lines Matching defs:usbh
224 static inline bool usbh_has_reg(struct bcm63xx_usbh_phy *usbh, int reg)
226 return (usbh->variant->regs[reg] >= 0);
229 static inline u32 usbh_readl(struct bcm63xx_usbh_phy *usbh, int reg)
231 return __raw_readl(usbh->base + usbh->variant->regs[reg]);
234 static inline void usbh_writel(struct bcm63xx_usbh_phy *usbh, int reg,
237 __raw_writel(value, usbh->base + usbh->variant->regs[reg]);
242 struct bcm63xx_usbh_phy *usbh = phy_get_drvdata(phy);
245 ret = clk_prepare_enable(usbh->usbh_clk);
247 dev_err(&phy->dev, "unable to enable usbh clock: %d\n", ret);
251 ret = clk_prepare_enable(usbh->usb_ref_clk);
254 clk_disable_unprepare(usbh->usbh_clk);
258 ret = reset_control_reset(usbh->reset);
261 clk_disable_unprepare(usbh->usb_ref_clk);
262 clk_disable_unprepare(usbh->usbh_clk);
267 if (usbh_has_reg(usbh, USBH_SWAP_CONTROL)) {
268 u32 val = usbh_readl(usbh, USBH_SWAP_CONTROL);
276 if (usbh->device_mode && usbh->variant->swapctl_dev_set)
277 val |= usbh->variant->swapctl_dev_set;
279 usbh_writel(usbh, USBH_SWAP_CONTROL, val);
282 if (usbh_has_reg(usbh, USBH_SETUP)) {
283 u32 val = usbh_readl(usbh, USBH_SETUP);
285 val |= usbh->variant->setup_set;
286 val &= ~usbh->variant->setup_clr;
288 usbh_writel(usbh, USBH_SETUP, val);
291 if (usbh_has_reg(usbh, USBH_USB_SIM_CONTROL)) {
292 u32 val = usbh_readl(usbh, USBH_USB_SIM_CONTROL);
294 val |= usbh->variant->usc_set;
296 usbh_writel(usbh, USBH_USB_SIM_CONTROL, val);
299 if (usbh->variant->tpc_val &&
300 usbh_has_reg(usbh, USBH_TEST_PORT_CONTROL))
301 usbh_writel(usbh, USBH_TEST_PORT_CONTROL,
302 usbh->variant->tpc_val);
304 if (usbh->device_mode &&
305 usbh_has_reg(usbh, USBH_UTMI_CONTROL1) &&
306 usbh->variant->utmictl1_dev_set) {
307 u32 val = usbh_readl(usbh, USBH_UTMI_CONTROL1);
309 val |= usbh->variant->utmictl1_dev_set;
311 usbh_writel(usbh, USBH_UTMI_CONTROL1, val);
319 struct bcm63xx_usbh_phy *usbh = phy_get_drvdata(phy);
321 if (usbh_has_reg(usbh, USBH_PLL_CONTROL1)) {
322 u32 val = usbh_readl(usbh, USBH_PLL_CONTROL1);
324 val |= usbh->variant->power_pllc_set;
325 val &= ~usbh->variant->power_pllc_clr;
327 usbh_writel(usbh, USBH_PLL_CONTROL1, val);
335 struct bcm63xx_usbh_phy *usbh = phy_get_drvdata(phy);
337 if (usbh_has_reg(usbh, USBH_PLL_CONTROL1)) {
338 u32 val = usbh_readl(usbh, USBH_PLL_CONTROL1);
340 val &= ~usbh->variant->power_pllc_set;
341 val |= usbh->variant->power_pllc_clr;
343 usbh_writel(usbh, USBH_PLL_CONTROL1, val);
351 struct bcm63xx_usbh_phy *usbh = phy_get_drvdata(phy);
353 clk_disable_unprepare(usbh->usbh_clk);
354 clk_disable_unprepare(usbh->usb_ref_clk);
370 struct bcm63xx_usbh_phy *usbh = dev_get_drvdata(dev);
372 usbh->device_mode = !!args->args[0];
380 struct bcm63xx_usbh_phy *usbh;
385 usbh = devm_kzalloc(dev, sizeof(*usbh), GFP_KERNEL);
386 if (!usbh)
392 usbh->variant = variant;
394 usbh->base = devm_platform_ioremap_resource(pdev, 0);
395 if (IS_ERR(usbh->base))
396 return PTR_ERR(usbh->base);
398 usbh->reset = devm_reset_control_get_exclusive(dev, NULL);
399 if (IS_ERR(usbh->reset)) {
400 if (PTR_ERR(usbh->reset) != -EPROBE_DEFER)
402 return PTR_ERR(usbh->reset);
405 usbh->usbh_clk = devm_clk_get_optional(dev, "usbh");
406 if (IS_ERR(usbh->usbh_clk))
407 return PTR_ERR(usbh->usbh_clk);
409 usbh->usb_ref_clk = devm_clk_get_optional(dev, "usb_ref");
410 if (IS_ERR(usbh->usb_ref_clk))
411 return PTR_ERR(usbh->usb_ref_clk);
419 platform_set_drvdata(pdev, usbh);
420 phy_set_drvdata(phy, usbh);
435 { .compatible = "brcm,bcm6318-usbh-phy", .data = &usbh_bcm6318 },
436 { .compatible = "brcm,bcm6328-usbh-phy", .data = &usbh_bcm6328 },
437 { .compatible = "brcm,bcm6358-usbh-phy", .data = &usbh_bcm6358 },
438 { .compatible = "brcm,bcm6362-usbh-phy", .data = &usbh_bcm6368 },
439 { .compatible = "brcm,bcm6368-usbh-phy", .data = &usbh_bcm6368 },
440 { .compatible = "brcm,bcm63268-usbh-phy", .data = &usbh_bcm63268 },
447 .name = "bcm63xx-usbh-phy",