Lines Matching defs:usbh
225 static inline bool usbh_has_reg(struct bcm63xx_usbh_phy *usbh, int reg)
227 return (usbh->variant->regs[reg] >= 0);
230 static inline u32 usbh_readl(struct bcm63xx_usbh_phy *usbh, int reg)
232 return __raw_readl(usbh->base + usbh->variant->regs[reg]);
235 static inline void usbh_writel(struct bcm63xx_usbh_phy *usbh, int reg,
238 __raw_writel(value, usbh->base + usbh->variant->regs[reg]);
243 struct bcm63xx_usbh_phy *usbh = phy_get_drvdata(phy);
246 ret = clk_prepare_enable(usbh->usbh_clk);
248 dev_err(&phy->dev, "unable to enable usbh clock: %d\n", ret);
252 ret = clk_prepare_enable(usbh->usb_ref_clk);
255 clk_disable_unprepare(usbh->usbh_clk);
259 ret = reset_control_reset(usbh->reset);
262 clk_disable_unprepare(usbh->usb_ref_clk);
263 clk_disable_unprepare(usbh->usbh_clk);
268 if (usbh_has_reg(usbh, USBH_SWAP_CONTROL)) {
269 u32 val = usbh_readl(usbh, USBH_SWAP_CONTROL);
277 if (usbh->device_mode && usbh->variant->swapctl_dev_set)
278 val |= usbh->variant->swapctl_dev_set;
280 usbh_writel(usbh, USBH_SWAP_CONTROL, val);
283 if (usbh_has_reg(usbh, USBH_SETUP)) {
284 u32 val = usbh_readl(usbh, USBH_SETUP);
286 val |= usbh->variant->setup_set;
287 val &= ~usbh->variant->setup_clr;
289 usbh_writel(usbh, USBH_SETUP, val);
292 if (usbh_has_reg(usbh, USBH_USB_SIM_CONTROL)) {
293 u32 val = usbh_readl(usbh, USBH_USB_SIM_CONTROL);
295 val |= usbh->variant->usc_set;
297 usbh_writel(usbh, USBH_USB_SIM_CONTROL, val);
300 if (usbh->variant->tpc_val &&
301 usbh_has_reg(usbh, USBH_TEST_PORT_CONTROL))
302 usbh_writel(usbh, USBH_TEST_PORT_CONTROL,
303 usbh->variant->tpc_val);
305 if (usbh->device_mode &&
306 usbh_has_reg(usbh, USBH_UTMI_CONTROL1) &&
307 usbh->variant->utmictl1_dev_set) {
308 u32 val = usbh_readl(usbh, USBH_UTMI_CONTROL1);
310 val |= usbh->variant->utmictl1_dev_set;
312 usbh_writel(usbh, USBH_UTMI_CONTROL1, val);
320 struct bcm63xx_usbh_phy *usbh = phy_get_drvdata(phy);
322 if (usbh_has_reg(usbh, USBH_PLL_CONTROL1)) {
323 u32 val = usbh_readl(usbh, USBH_PLL_CONTROL1);
325 val |= usbh->variant->power_pllc_set;
326 val &= ~usbh->variant->power_pllc_clr;
328 usbh_writel(usbh, USBH_PLL_CONTROL1, val);
336 struct bcm63xx_usbh_phy *usbh = phy_get_drvdata(phy);
338 if (usbh_has_reg(usbh, USBH_PLL_CONTROL1)) {
339 u32 val = usbh_readl(usbh, USBH_PLL_CONTROL1);
341 val &= ~usbh->variant->power_pllc_set;
342 val |= usbh->variant->power_pllc_clr;
344 usbh_writel(usbh, USBH_PLL_CONTROL1, val);
352 struct bcm63xx_usbh_phy *usbh = phy_get_drvdata(phy);
354 clk_disable_unprepare(usbh->usbh_clk);
355 clk_disable_unprepare(usbh->usb_ref_clk);
371 struct bcm63xx_usbh_phy *usbh = dev_get_drvdata(dev);
373 usbh->device_mode = !!args->args[0];
381 struct bcm63xx_usbh_phy *usbh;
386 usbh = devm_kzalloc(dev, sizeof(*usbh), GFP_KERNEL);
387 if (!usbh)
393 usbh->variant = variant;
395 usbh->base = devm_platform_ioremap_resource(pdev, 0);
396 if (IS_ERR(usbh->base))
397 return PTR_ERR(usbh->base);
399 usbh->reset = devm_reset_control_get_exclusive(dev, NULL);
400 if (IS_ERR(usbh->reset)) {
401 if (PTR_ERR(usbh->reset) != -EPROBE_DEFER)
403 return PTR_ERR(usbh->reset);
406 usbh->usbh_clk = devm_clk_get_optional(dev, "usbh");
407 if (IS_ERR(usbh->usbh_clk))
408 return PTR_ERR(usbh->usbh_clk);
410 usbh->usb_ref_clk = devm_clk_get_optional(dev, "usb_ref");
411 if (IS_ERR(usbh->usb_ref_clk))
412 return PTR_ERR(usbh->usb_ref_clk);
420 platform_set_drvdata(pdev, usbh);
421 phy_set_drvdata(phy, usbh);
436 { .compatible = "brcm,bcm6318-usbh-phy", .data = &usbh_bcm6318 },
437 { .compatible = "brcm,bcm6328-usbh-phy", .data = &usbh_bcm6328 },
438 { .compatible = "brcm,bcm6358-usbh-phy", .data = &usbh_bcm6358 },
439 { .compatible = "brcm,bcm6362-usbh-phy", .data = &usbh_bcm6368 },
440 { .compatible = "brcm,bcm6368-usbh-phy", .data = &usbh_bcm6368 },
441 { .compatible = "brcm,bcm63268-usbh-phy", .data = &usbh_bcm63268 },
448 .name = "bcm63xx-usbh-phy",