summaryrefslogtreecommitdiff
path: root/include/linux/fsl_devices.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/fsl_devices.h')
-rw-r--r--include/linux/fsl_devices.h63
1 files changed, 62 insertions, 1 deletions
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
index 708bab58d8d0..6fac52cff1c9 100644
--- a/include/linux/fsl_devices.h
+++ b/include/linux/fsl_devices.h
@@ -6,7 +6,7 @@
*
* Maintainer: Kumar Gala <galak@kernel.crashing.org>
*
- * Copyright 2004 Freescale Semiconductor, Inc
+ * Copyright 2004, 2009 Freescale Semiconductor, Inc
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -92,6 +92,15 @@ enum fsl_usb2_operating_modes {
FSL_USB2_DR_OTG,
};
+/* this used for usb port type */
+enum fsl_usb2_modes {
+ FSL_USB_DR_HOST,
+ FSL_USB_DR_DEVICE,
+ FSL_USB_MPH_HOST1,
+ FSL_USB_MPH_HOST2,
+ FSL_USB_UNKNOWN, /* unkonwn status */
+};
+
enum fsl_usb2_phy_modes {
FSL_USB2_PHY_NONE,
FSL_USB2_PHY_ULPI,
@@ -100,11 +109,49 @@ enum fsl_usb2_phy_modes {
FSL_USB2_PHY_SERIAL,
};
+struct platform_device;
struct fsl_usb2_platform_data {
/* board specific information */
enum fsl_usb2_operating_modes operating_mode;
enum fsl_usb2_phy_modes phy_mode;
unsigned int port_enables;
+
+ char *name; /* pretty print */
+ int (*platform_init) (struct platform_device *);
+ void (*platform_uninit) (struct fsl_usb2_platform_data *);
+ void __iomem *regs; /* ioremap'd register base */
+ u32 xcvr_type; /* PORTSC_PTS_* */
+ char *transceiver; /* transceiver name */
+ unsigned power_budget; /* for hcd->power_budget */
+ struct platform_device *pdev;
+ struct fsl_xcvr_ops *xcvr_ops;
+ struct fsl_xcvr_power *xcvr_pwr;
+ int (*gpio_usb_active) (void);
+ void (*gpio_usb_inactive) (void);
+ void (*usb_clock_for_pm) (bool);
+ void (*platform_suspend)(struct fsl_usb2_platform_data *);
+ void (*platform_resume)(struct fsl_usb2_platform_data *);
+ void (*wake_up_enable)(struct fsl_usb2_platform_data *pdata, bool on);
+ unsigned big_endian_mmio : 1;
+ unsigned big_endian_desc : 1;
+ unsigned es : 1; /* need USBMODE:ES */
+ unsigned have_sysif_regs : 1;
+ unsigned le_setup_buf : 1;
+ unsigned change_ahb_burst:1;
+ unsigned ahb_burst_mode:3;
+ unsigned suspended : 1;
+ unsigned already_suspended : 1;
+
+ /* register save area for suspend/resume */
+ u32 pm_command;
+ u32 pm_status;
+ u32 pm_intr_enable;
+ u32 pm_frame_index;
+ u32 pm_segment;
+ u32 pm_frame_list;
+ u32 pm_async_next;
+ u32 pm_configured_flag;
+ u32 pm_portsc;
};
/* Flags in fsl_usb2_mph_platform_data */
@@ -122,6 +169,20 @@ struct fsl_spi_platform_data {
u32 sysclk;
};
+struct fsl_ata_platform_data {
+ int adma_flag; /* AMDA mode is used or not, 1:used.*/
+ int udma_mask; /* UDMA modes h/w can handle */
+ int mwdma_mask; /* MDMA modes h/w can handle */
+ int pio_mask; /* PIO modes h/w can handle */
+ int fifo_alarm; /* value for fifo_alarm reg */
+ int max_sg; /* longest sglist h/w can handle */
+ int (*init)(struct platform_device *pdev);
+ void (*exit)(void);
+ char *io_reg;
+ char *core_reg;
+};
+
+
struct mpc8xx_pcmcia_ops {
void(*hw_ctrl)(int slot, int enable);
int(*voltage_set)(int slot, int vcc, int vpp);