board: usb: Replace legacy usb_gadget_handle_interrupts()

The usb_gadget_handle_interrupts() is no longer used anywhere,
replace the remaining uses with dm_usb_gadget_handle_interrupts()
which takes udevice as a parameter.

Some of the UDC drivers currently ignore the index parameter altogether,
those also ignore the udevice and have to be reworked. Other like the
dwc3_uboot_handle_interrupt() had to be switched from index to udevice
look up to avoid breakage.

Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # on khadas vim3
Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:
Marek Vasut 2023-09-01 11:50:03 +02:00
parent 890076d20e
commit 2caf974b5f
17 changed files with 28 additions and 54 deletions

View file

@ -299,9 +299,9 @@ static struct dwc3_device dwc3_device_data = {
.hsphy_mode = USBPHY_INTERFACE_MODE_UTMIW, .hsphy_mode = USBPHY_INTERFACE_MODE_UTMIW,
}; };
int usb_gadget_handle_interrupts(int index) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{ {
dwc3_uboot_handle_interrupt(0); dwc3_uboot_handle_interrupt(dev);
return 0; return 0;
} }

View file

@ -418,9 +418,9 @@ out:
return rv; return rv;
} }
int usb_gadget_handle_interrupts(int index) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{ {
dwc3_uboot_handle_interrupt(0); dwc3_uboot_handle_interrupt(dev);
return 0; return 0;
} }

View file

@ -126,9 +126,9 @@ static struct dwc3_device dwc3_device_data = {
.index = 0, .index = 0,
}; };
int usb_gadget_handle_interrupts(int index) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{ {
dwc3_uboot_handle_interrupt(0); dwc3_uboot_handle_interrupt(dev);
return 0; return 0;
} }

View file

@ -50,9 +50,9 @@ static struct dwc3_device dwc3_device_data = {
.index = 0, .index = 0,
}; };
int usb_gadget_handle_interrupts(int index) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{ {
dwc3_uboot_handle_interrupt(index); dwc3_uboot_handle_interrupt(dev);
return 0; return 0;
} }

View file

@ -760,13 +760,13 @@ static struct ti_usb_phy_device usb_phy2_device = {
.index = 1, .index = 1,
}; };
int usb_gadget_handle_interrupts(int index) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{ {
u32 status; u32 status;
status = dwc3_omap_uboot_interrupt_status(index); status = dwc3_omap_uboot_interrupt_status(dev);
if (status) if (status)
dwc3_uboot_handle_interrupt(index); dwc3_uboot_handle_interrupt(dev);
return 0; return 0;
} }

View file

@ -986,18 +986,18 @@ void dwc3_uboot_exit(int index)
/** /**
* dwc3_uboot_handle_interrupt - handle dwc3 core interrupt * dwc3_uboot_handle_interrupt - handle dwc3 core interrupt
* @index: index of this controller * @dev: device of this controller
* *
* Invokes dwc3 gadget interrupts. * Invokes dwc3 gadget interrupts.
* *
* Generally called from board file. * Generally called from board file.
*/ */
void dwc3_uboot_handle_interrupt(int index) void dwc3_uboot_handle_interrupt(struct udevice *dev)
{ {
struct dwc3 *dwc = NULL; struct dwc3 *dwc = NULL;
list_for_each_entry(dwc, &dwc3_list, list) { list_for_each_entry(dwc, &dwc3_list, list) {
if (dwc->index != index) if (dwc->dev != dev)
continue; continue;
dwc3_gadget_uboot_handle_interrupt(dwc); dwc3_gadget_uboot_handle_interrupt(dwc);

View file

@ -119,7 +119,7 @@
#define USBOTGSS_UTMI_OTG_STATUS_VBUSVALID (1 << 1) #define USBOTGSS_UTMI_OTG_STATUS_VBUSVALID (1 << 1)
struct dwc3_omap { struct dwc3_omap {
struct device *dev; struct udevice *dev;
void __iomem *base; void __iomem *base;
@ -429,19 +429,19 @@ void dwc3_omap_uboot_exit(int index)
/** /**
* dwc3_omap_uboot_interrupt_status - check the status of interrupt * dwc3_omap_uboot_interrupt_status - check the status of interrupt
* @index: index of this controller * @dev: device of this controller
* *
* Checks the status of interrupts and returns true if an interrupt * Checks the status of interrupts and returns true if an interrupt
* is detected or false otherwise. * is detected or false otherwise.
* *
* Generally called from board file. * Generally called from board file.
*/ */
int dwc3_omap_uboot_interrupt_status(int index) int dwc3_omap_uboot_interrupt_status(struct udevice *dev)
{ {
struct dwc3_omap *omap = NULL; struct dwc3_omap *omap = NULL;
list_for_each_entry(omap, &dwc3_omap_list, list) list_for_each_entry(omap, &dwc3_omap_list, list)
if (omap->index == index) if (omap->dev == dev)
return dwc3_omap_interrupt(-1, omap); return dwc3_omap_interrupt(-1, omap);
return 0; return 0;

View file

@ -1429,7 +1429,7 @@ static const struct at91_udc_caps at91sam9261_udc_caps = {
}; };
#endif #endif
int usb_gadget_handle_interrupts(int index) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{ {
struct at91_udc *udc = controller; struct at91_udc *udc = controller;

View file

@ -1198,14 +1198,13 @@ static struct usba_udc controller = {
}, },
}; };
int usb_gadget_handle_interrupts(int index) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{ {
struct usba_udc *udc = &controller; struct usba_udc *udc = &controller;
return usba_udc_irq(udc); return usba_udc_irq(udc);
} }
int usb_gadget_register_driver(struct usb_gadget_driver *driver) int usb_gadget_register_driver(struct usb_gadget_driver *driver)
{ {
struct usba_udc *udc = &controller; struct usba_udc *udc = &controller;

View file

@ -869,10 +869,10 @@ void udc_irq(void)
} }
} }
int usb_gadget_handle_interrupts(int index) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{ {
u32 value;
struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor; struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
u32 value;
value = readl(&udc->usbsts); value = readl(&udc->usbsts);
if (value) if (value)

View file

@ -941,15 +941,12 @@ int dwc2_udc_handle_interrupt(void)
return 0; return 0;
} }
#if !CONFIG_IS_ENABLED(DM_USB_GADGET) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
int usb_gadget_handle_interrupts(int index)
{ {
return dwc2_udc_handle_interrupt(); return dwc2_udc_handle_interrupt();
} }
#else /* CONFIG_IS_ENABLED(DM_USB_GADGET) */ #if CONFIG_IS_ENABLED(DM_USB_GADGET)
struct dwc2_priv_data { struct dwc2_priv_data {
struct clk_bulk clks; struct clk_bulk clks;
struct reset_ctl_bulk resets; struct reset_ctl_bulk resets;
@ -957,11 +954,6 @@ struct dwc2_priv_data {
struct udevice *usb33d_supply; struct udevice *usb33d_supply;
}; };
int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{
return dwc2_udc_handle_interrupt();
}
static int dwc2_phy_setup(struct udevice *dev, struct phy_bulk *phys) static int dwc2_phy_setup(struct udevice *dev, struct phy_bulk *phys)
{ {
int ret; int ret;

View file

@ -41,18 +41,6 @@ int udc_device_put(struct udevice *udev)
return -ENOSYS; return -ENOSYS;
#endif #endif
} }
int usb_gadget_handle_interrupts(int index)
{
struct udevice *udc;
int ret;
ret = udc_device_get_by_index(index, &udc);
if (ret)
return ret;
return dm_usb_gadget_handle_interrupts(udc);
}
#else #else
/* Backwards hardware compatibility -- switch to DM_USB_GADGET */ /* Backwards hardware compatibility -- switch to DM_USB_GADGET */
static int legacy_index; static int legacy_index;

View file

@ -130,11 +130,6 @@ int dm_usb_gadget_handle_interrupts(struct udevice *dev)
return 0; return 0;
} }
#else #else
int usb_gadget_handle_interrupts(int index)
{
return 0;
}
int usb_gadget_register_driver(struct usb_gadget_driver *driver) int usb_gadget_register_driver(struct usb_gadget_driver *driver)
{ {
struct sandbox_udc *dev = this_controller; struct sandbox_udc *dev = this_controller;

View file

@ -376,7 +376,7 @@ struct dm_usb_ops musb_usb_ops = {
#if defined(CONFIG_USB_MUSB_GADGET) && !CONFIG_IS_ENABLED(DM_USB_GADGET) #if defined(CONFIG_USB_MUSB_GADGET) && !CONFIG_IS_ENABLED(DM_USB_GADGET)
static struct musb *gadget; static struct musb *gadget;
int usb_gadget_handle_interrupts(int index) int dm_usb_gadget_handle_interrupts(struct udevice *dev)
{ {
schedule(); schedule();
if (!gadget || !gadget->isr) if (!gadget || !gadget->isr)

View file

@ -27,5 +27,5 @@ struct dwc3_omap_device {
int dwc3_omap_uboot_init(struct dwc3_omap_device *dev); int dwc3_omap_uboot_init(struct dwc3_omap_device *dev);
void dwc3_omap_uboot_exit(int index); void dwc3_omap_uboot_exit(int index);
int dwc3_omap_uboot_interrupt_status(int index); int dwc3_omap_uboot_interrupt_status(struct udevice *dev);
#endif /* __DWC3_OMAP_UBOOT_H_ */ #endif /* __DWC3_OMAP_UBOOT_H_ */

View file

@ -44,7 +44,7 @@ struct dwc3_device {
int dwc3_uboot_init(struct dwc3_device *dev); int dwc3_uboot_init(struct dwc3_device *dev);
void dwc3_uboot_exit(int index); void dwc3_uboot_exit(int index);
void dwc3_uboot_handle_interrupt(int index); void dwc3_uboot_handle_interrupt(struct udevice *dev);
struct phy; struct phy;
#if CONFIG_IS_ENABLED(PHY) && CONFIG_IS_ENABLED(DM_USB) #if CONFIG_IS_ENABLED(PHY) && CONFIG_IS_ENABLED(DM_USB)

View file

@ -968,7 +968,7 @@ extern struct usb_ep *usb_ep_autoconfig(struct usb_gadget *,
extern void usb_ep_autoconfig_reset(struct usb_gadget *); extern void usb_ep_autoconfig_reset(struct usb_gadget *);
extern int usb_gadget_handle_interrupts(int index); extern int dm_usb_gadget_handle_interrupts(struct udevice *);
/** /**
* udc_device_get_by_index() - Get UDC udevice by index * udc_device_get_by_index() - Get UDC udevice by index