[PATCH] Updated Patch to add support for Freescale 83xx Host Mode USB
Kumar Gala
galak at kernel.crashing.org
Thu Jan 26 16:15:38 EST 2006
On Jan 25, 2006, at 10:19 AM, Marcelo Tosatti wrote:
> On Mon, Jan 23, 2006 at 04:59:33PM -0700, Randy Vinson wrote:
>> Greetings,
>> I've attached an updated patch (based on 2.6.16-rc1) which adds
>> Host mode support for the Dual-Role(DR) and Multi-Port-Host (MPH) USB
>> controllers found in the Freescale 8349. The update was to
>> reconcile the
>> port numbering scheme such that it matches the 8349 documentation.
>> Since
>> my previous patch has not yet gone upstream, the maintainer
>> requested a
>> fresh patch.
>>
>> Note that this patch only provides the platform-specific code that
>> sets up the external hardware and pin configuration. The actual DR
>> and
>> MPH controller driver was posted on the linux-usb-devel mailing list.
>>
>> Using a Freescale 8349CDS reference board, the DR and MPH
>> controllers have been successfully tested using a USB 2.0 high speed
>> FLASH drive, a USB 1.1 full speed 4-port hub and a Siemens
>> SpeedStream
>> USB to Ethernet adapter (assuming the previous 8349 driver updates
>> posted to linux-usb-devel have been applied).
>>
>> Randy Vinson
>> MontaVista Software
>
>> Adding platform support for the 834x Host Mode USB controller.
>>
>> This patch provides the platform-specific hardware setup required
>> by the
>> 83xx Host Mode USB controller on the Freescale 8349CDS reference
>> system.
>>
>> Signed-off-by: Randy Vinson <rvinson at mvista.com>
>>
>> ---
>> commit 30caa62b0e433b466b0880efa32375359b6e4fea
>> tree e9bacf15ad1a58f6f15a343a2b5f233affec0ca1
>> parent a3d36ef38dcdcbbc7e1860f2f92569145524b1d5
>> author Randy Vinson <rvinson at linuxbox.(none)> Mon, 23 Jan 2006
>> 16:46:39 -0700
>> committer Randy Vinson <rvinson at linuxbox.(none)> Mon, 23 Jan 2006
>> 16:46:39 -0700
>>
>> arch/ppc/Kconfig | 2 +
>> arch/ppc/platforms/83xx/Kconfig | 28 +++++++++
>> arch/ppc/platforms/83xx/mpc834x_sys.c | 100 +++++++++++++++++++++
>> ++++++++++++
>> arch/ppc/platforms/83xx/mpc834x_sys.h | 3 +
>> arch/ppc/syslib/mpc83xx_devices.c | 16 +++++
>> include/asm-ppc/mpc83xx.h | 17 ++++++
>> 6 files changed, 166 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig
>> index 11899f0..b33b0eb 100644
>> --- a/arch/ppc/Kconfig
>> +++ b/arch/ppc/Kconfig
>> @@ -681,6 +681,8 @@ config EV64360
>> platform.
>> endchoice
>>
>> +source arch/ppc/platforms/83xx/Kconfig
>> +
>> config PQ2ADS
>> bool
>> depends on ADS8272
>> diff --git a/arch/ppc/platforms/83xx/Kconfig b/arch/ppc/platforms/
>> 83xx/Kconfig
>> new file mode 100644
>> index 0000000..90bc67a
>> --- /dev/null
>> +++ b/arch/ppc/platforms/83xx/Kconfig
>> @@ -0,0 +1,28 @@
>> +config 834x_USB_SUPPORT
>> + bool "834x USB Support"
>> + depends on MPC834x_SYS
>> + default y
>> + ---help---
>> + Enables support for the USB controllers on the MPC834x chip.
>> The 834x
>> + reference board is wired for only one USB port. That port may be
>> + used by either the MPH or DR USB controller.
>> + Requires USB Host EHCI support.
>> + If unsure, say Y.
>> +choice
>> + prompt "834x USB Controller Selection"
>> + depends on 834x_USB_SUPPORT
>> + default 834x_DR_USB_SUPPORT
>> +
>> +config 834x_DR_USB_SUPPORT
>> + bool "DR Controller"
>> + select USB_EHCI_ROOT_HUB_TT
>> + ---help---
>> + Select if using the Dual-Role (DR) USB controller.
>> +
>> +config 834x_MPH_USB_SUPPORT
>> + bool "MPH Controller"
>> + ---help---
>> + Select if using the Multi-Port-Host (MPH) USB controller.
>> +
>> +endchoice
>> +
>> diff --git a/arch/ppc/platforms/83xx/mpc834x_sys.c b/arch/ppc/
>> platforms/83xx/mpc834x_sys.c
>> index 012e1e6..319661e 100644
>> --- a/arch/ppc/platforms/83xx/mpc834x_sys.c
>> +++ b/arch/ppc/platforms/83xx/mpc834x_sys.c
>> @@ -11,6 +11,9 @@
>> * under the terms of the GNU General Public License as
>> published by the
>> * Free Software Foundation; either version 2 of the License,
>> or (at your
>> * option) any later version.
>> + *
>> + * USB setup added by Randy Vinson <rvinson at mvista.com> based on
>> code from
>> + * Hunter Wu.
>> */
>>
>> #include <linux/config.h>
>> @@ -93,6 +96,99 @@ mpc83xx_exclude_device(u_char bus, u_cha
>> }
>> #endif /* CONFIG_PCI */
>>
>> +/*
>> + * Configure the on-chip USB controller. The MPC834xCDS only
>> supports the
>> + * second USB interface (port 1). This code sets up the hardware
>> and then
>> + * lets the platform driver take over device setup.
>> + */
>> +
>> +#ifdef CONFIG_834x_USB_SUPPORT
>> +void mpc834x_board_init(void)
>> +{
>> + unsigned char __iomem *bcsr;
>> + volatile unsigned char *bcsr5_p;
>> +
>> + /*
>> + * if SYS board is plug into PIB board,
>> + * force to use the PHY on SYS board
>> + * */
>> + bcsr = ioremap(BCSR_PHYS_ADDR, BCSR_SIZE);
>> + bcsr5_p = bcsr + BCSR5_OFF;
>> + if ( (*bcsr5_p & BCSR5_INT_USB) == 0 )
>> + *bcsr5_p = (*bcsr5_p | BCSR5_INT_USB);
>
> Randy,
>
> Can you please use in/out io accessors instead of direct memory
> references
> to ?
Marcelo, good comment. Just, an FYI. This patch of Randy's isn't
going into the kernel. I ask him to post it just so it was on list.
I wonder if sparse would be capable of warning for doing direct
pointer load/store on __iomem pointers.
- kumar
More information about the Linuxppc-embedded
mailing list