Re: [PATCH 1/2] usb: host: tegra: don't touch EMC clock

Stephen Warren
2013-01-23T16:17:14Z

On 01/23/2013 02:45 AM, Lucas Stach wrote:
> Am Mittwoch, den 23.01.2013, 12:25 +0530 schrieb Venu Byravarasu:
>>> -----Original Message-----
>>> From: linux-tegra-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-tegra-
>>> owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On Behalf Of Stephen Warren
>>> Sent: Wednesday, January 23, 2013 5:58 AM
>>> To: Alan Stern; Greg Kroah-Hartman; Stephen Warren
>>> Cc: Venu Byravarasu; linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; linux-arm-
>>> kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org; linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; Stephen Warren
>>> Subject: [PATCH 1/2] usb: host: tegra: don't touch EMC clock
>>>
>>> From: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>>>
>>> Clock "emc" is for the External Memory Controller. The USB driver has no
>>> business touching this clock directly. Remove the code that does so.
>>
>> Stephen,
>> This was primarily done to make sure that EMC is set to a minimum
>> frequency, below which data errors may occur during USB transfers.
>> If we plan to remove this, how should we make sure that the EMC
>> is programmed for the required frequency during USB transfers?
>
> You could use something like the API I added in "ARM: tegra: add EMC
> clock scaling API". This needs some rework and I looked into integrating
> this with the DEVFREQ framework, but I don't think it fits too well.
>
> Bandwidth requirements should always be communicated to the EMC driver
> and not described by clock rates.

I agree.

Besides, on some boards there's an EMC scaling table defined already, so
the EMC driver is simply overriding the value the USB driver selects anyway.