| .. | .. |
|---|
| 115 | 115 | clk_disable_unprepare(glue->main); |
|---|
| 116 | 116 | } |
|---|
| 117 | 117 | |
|---|
| 118 | | -static int musb_usb_role_sx_set(struct device *dev, enum usb_role role) |
|---|
| 118 | +static int mtk_otg_switch_set(struct mtk_glue *glue, enum usb_role role) |
|---|
| 119 | 119 | { |
|---|
| 120 | | - struct mtk_glue *glue = dev_get_drvdata(dev); |
|---|
| 121 | 120 | struct musb *musb = glue->musb; |
|---|
| 122 | 121 | u8 devctl = readb(musb->mregs + MUSB_DEVCTL); |
|---|
| 123 | 122 | enum usb_role new_role; |
|---|
| .. | .. |
|---|
| 168 | 167 | return 0; |
|---|
| 169 | 168 | } |
|---|
| 170 | 169 | |
|---|
| 171 | | -static enum usb_role musb_usb_role_sx_get(struct device *dev) |
|---|
| 170 | +static int musb_usb_role_sx_set(struct usb_role_switch *sw, enum usb_role role) |
|---|
| 172 | 171 | { |
|---|
| 173 | | - struct mtk_glue *glue = dev_get_drvdata(dev); |
|---|
| 172 | + return mtk_otg_switch_set(usb_role_switch_get_drvdata(sw), role); |
|---|
| 173 | +} |
|---|
| 174 | + |
|---|
| 175 | +static enum usb_role musb_usb_role_sx_get(struct usb_role_switch *sw) |
|---|
| 176 | +{ |
|---|
| 177 | + struct mtk_glue *glue = usb_role_switch_get_drvdata(sw); |
|---|
| 174 | 178 | |
|---|
| 175 | 179 | return glue->role; |
|---|
| 176 | 180 | } |
|---|
| .. | .. |
|---|
| 181 | 185 | |
|---|
| 182 | 186 | role_sx_desc.set = musb_usb_role_sx_set; |
|---|
| 183 | 187 | role_sx_desc.get = musb_usb_role_sx_get; |
|---|
| 188 | + role_sx_desc.fwnode = dev_fwnode(glue->dev); |
|---|
| 189 | + role_sx_desc.driver_data = glue; |
|---|
| 184 | 190 | glue->role_sw = usb_role_switch_register(glue->dev, &role_sx_desc); |
|---|
| 185 | 191 | |
|---|
| 186 | 192 | return PTR_ERR_OR_ZERO(glue->role_sw); |
|---|
| .. | .. |
|---|
| 293 | 299 | return -EINVAL; |
|---|
| 294 | 300 | } |
|---|
| 295 | 301 | |
|---|
| 296 | | - glue->role = new_role; |
|---|
| 297 | | - musb_usb_role_sx_set(dev, glue->role); |
|---|
| 302 | + mtk_otg_switch_set(glue, new_role); |
|---|
| 298 | 303 | return 0; |
|---|
| 299 | 304 | } |
|---|
| 300 | 305 | |
|---|
| .. | .. |
|---|
| 449 | 454 | struct platform_device_info pinfo; |
|---|
| 450 | 455 | struct device *dev = &pdev->dev; |
|---|
| 451 | 456 | struct device_node *np = dev->of_node; |
|---|
| 452 | | - int ret = -ENOMEM; |
|---|
| 457 | + int ret; |
|---|
| 453 | 458 | |
|---|
| 454 | 459 | glue = devm_kzalloc(dev, sizeof(*glue), GFP_KERNEL); |
|---|
| 455 | 460 | if (!glue) |
|---|
| .. | .. |
|---|
| 513 | 518 | |
|---|
| 514 | 519 | glue->xceiv = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2); |
|---|
| 515 | 520 | if (IS_ERR(glue->xceiv)) { |
|---|
| 516 | | - dev_err(dev, "fail to getting usb-phy %d\n", ret); |
|---|
| 517 | 521 | ret = PTR_ERR(glue->xceiv); |
|---|
| 522 | + dev_err(dev, "fail to getting usb-phy %d\n", ret); |
|---|
| 518 | 523 | goto err_unregister_usb_phy; |
|---|
| 519 | 524 | } |
|---|
| 520 | 525 | |
|---|