diff options
author | Anatolij Gustschin <agust@denx.de> | 2010-09-28 14:55:21 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-10-22 13:21:58 -0400 |
commit | 230f7ede6c2f0e403f29e03e0251a470aa9350dd (patch) | |
tree | 6f1c14f10696c12fd4461cc48289b3cb7a342060 /include/linux/fsl_devices.h | |
parent | 126512e3f274802ca65ebeca8660237f0361ad48 (diff) |
USB: add USB EHCI support for MPC5121 SoC
Extends FSL EHCI platform driver glue layer to support
MPC5121 USB controllers. MPC5121 Rev 2.0 silicon EHCI
registers are in big endian format. The appropriate flags
are set using the information in the platform data structure.
MPC83xx system interface registers are not available on
MPC512x, so the access to these registers is isolated in
MPC512x case. Furthermore the USB controller clocks
must be enabled before 512x register accesses which is
done by providing platform specific init callback.
The MPC512x internal USB PHY doesn't provide supply voltage.
For boards using different power switches allow specifying
DRVVBUS and PWR_FAULT signal polarity of the MPC5121 internal
PHY using "fsl,invert-drvvbus" and "fsl,invert-pwr-fault"
properties in the device tree USB nodes. Adds documentation
for this new device tree bindings.
Signed-off-by: Anatolij Gustschin <agust@denx.de>
Cc: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/fsl_devices.h')
-rw-r--r-- | include/linux/fsl_devices.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h index 28e33fea5107..d5f9a7431bd0 100644 --- a/include/linux/fsl_devices.h +++ b/include/linux/fsl_devices.h | |||
@@ -58,11 +58,26 @@ enum fsl_usb2_phy_modes { | |||
58 | FSL_USB2_PHY_SERIAL, | 58 | FSL_USB2_PHY_SERIAL, |
59 | }; | 59 | }; |
60 | 60 | ||
61 | struct clk; | ||
62 | struct platform_device; | ||
63 | |||
61 | struct fsl_usb2_platform_data { | 64 | struct fsl_usb2_platform_data { |
62 | /* board specific information */ | 65 | /* board specific information */ |
63 | enum fsl_usb2_operating_modes operating_mode; | 66 | enum fsl_usb2_operating_modes operating_mode; |
64 | enum fsl_usb2_phy_modes phy_mode; | 67 | enum fsl_usb2_phy_modes phy_mode; |
65 | unsigned int port_enables; | 68 | unsigned int port_enables; |
69 | |||
70 | int (*init)(struct platform_device *); | ||
71 | void (*exit)(struct platform_device *); | ||
72 | void __iomem *regs; /* ioremap'd register base */ | ||
73 | struct clk *clk; | ||
74 | unsigned big_endian_mmio:1; | ||
75 | unsigned big_endian_desc:1; | ||
76 | unsigned es:1; /* need USBMODE:ES */ | ||
77 | unsigned le_setup_buf:1; | ||
78 | unsigned have_sysif_regs:1; | ||
79 | unsigned invert_drvvbus:1; | ||
80 | unsigned invert_pwr_fault:1; | ||
66 | }; | 81 | }; |
67 | 82 | ||
68 | /* Flags in fsl_usb2_mph_platform_data */ | 83 | /* Flags in fsl_usb2_mph_platform_data */ |