[PATCH RFC 1/4] usb: add Marvell MVEBU USB support

Sebastian Hesselbarth sebastian.hesselbarth at gmail.com
Mon Jun 30 00:46:22 PDT 2014


On 06/30/2014 08:30 AM, Sascha Hauer wrote:
>> +	if (usb->mode == USB_DR_MODE_HOST &&
>> +	    IS_ENABLED(CONFIG_USB_MVEBU_HOST)) {
>> +		ret = regulator_enable(usb->vbus);
>> +		if (ret)
>> +			return ret;
>> +		ret = ehci_register(dev, &usb->ehci);
>> +		if (ret)
>> +			regulator_disable(usb->vbus);
>> +	} else if (usb->mode == USB_DR_MODE_PERIPHERAL &&
>> +		   IS_ENABLED(CONFIG_USB_MVEBU_DEVICE)) {
>> +		ret = regulator_disable(usb->vbus);
>> +		if (ret)
>> +			return ret;
>> +		ret = ci_udc_register(dev, usb->base);
>> +	} else {
>> +		dev_err(dev, "Unsupported USB role\n");
>> +		ret = -ENODEV;
>> +	}
> 
> This should probably be shared between i.MX and mvebu. I have a patch
> somewhere which implements a device parameter to switch between host and
> device mode. It could be used for both i.MX and mvebu.

Yes. As Jason already mentioned we probably should have a pure ChipIdea
probe() without any vendor-specific stuff.

For Marvell SoCs there is a set of registers that has to be configured
for DMA accesses, but I think we can move them into the bus driver
instead. We could have a list of compatibles and register offsets in
bus/mvebu.c that takes care of the registers on MVEBU for fooHCI IP.
I'll have to double-check if the register content is retained during
clk gating.

Having a ChipIdea probe() will also allow i.MX to reuse the same
function after it has set up the Freescale specific stuff.

> Otherwise the series looks fine to me.

Ok. BTW, I have a similar patch set for SDHCI that I'll send as RFC
in a day or two.

Sebastian





More information about the barebox mailing list