diff options
author | Dong Aisheng <b29396@freescale.com> | 2011-11-02 19:23:31 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-01-09 21:04:23 +0800 |
commit | 594f7f22dcfa72f068c1a999a077e637e14b8622 (patch) | |
tree | 65c85e3718ec2052cef6a12aaa92442c006d7252 /arch/arm/plat-mxc | |
parent | d85f1321d467d25da4a1023a4e8351faf8f17630 (diff) |
ENGR00161256-2 mx6q arm2: add flexcan support
Add flexcan support.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Diffstat (limited to 'arch/arm/plat-mxc')
-rw-r--r-- | arch/arm/plat-mxc/devices/platform-flexcan.c | 22 | ||||
-rwxr-xr-x | arch/arm/plat-mxc/include/mach/devices-common.h | 1 | ||||
-rw-r--r-- | arch/arm/plat-mxc/include/mach/mx6.h | 8 |
3 files changed, 21 insertions, 10 deletions
diff --git a/arch/arm/plat-mxc/devices/platform-flexcan.c b/arch/arm/plat-mxc/devices/platform-flexcan.c index 4e8497af2eb1..d660237bab45 100644 --- a/arch/arm/plat-mxc/devices/platform-flexcan.c +++ b/arch/arm/plat-mxc/devices/platform-flexcan.c @@ -8,21 +8,22 @@ #include <mach/hardware.h> #include <mach/devices-common.h> -#define imx_flexcan_data_entry_single(soc, _id, _hwid, _size) \ +#define imx_flexcan_data_entry_single(soc, _devid, _id, _hwid, _size) \ { \ + .devid = _devid, \ .id = _id, \ .iobase = soc ## _CAN ## _hwid ## _BASE_ADDR, \ .iosize = _size, \ .irq = soc ## _INT_CAN ## _hwid, \ } -#define imx_flexcan_data_entry(soc, _id, _hwid, _size) \ - [_id] = imx_flexcan_data_entry_single(soc, _id, _hwid, _size) +#define imx_flexcan_data_entry(soc, _devid, _id, _hwid, _size) \ + [_id] = imx_flexcan_data_entry_single(soc, _devid, _id, _hwid, _size) #ifdef CONFIG_SOC_IMX25 const struct imx_flexcan_data imx25_flexcan_data[] __initconst = { #define imx25_flexcan_data_entry(_id, _hwid) \ - imx_flexcan_data_entry(MX25, _id, _hwid, SZ_16K) + imx_flexcan_data_entry(MX25, "imx25-flexcan", _id, _hwid, SZ_16K) imx25_flexcan_data_entry(0, 1), imx25_flexcan_data_entry(1, 2), }; @@ -31,12 +32,21 @@ const struct imx_flexcan_data imx25_flexcan_data[] __initconst = { #ifdef CONFIG_SOC_IMX35 const struct imx_flexcan_data imx35_flexcan_data[] __initconst = { #define imx35_flexcan_data_entry(_id, _hwid) \ - imx_flexcan_data_entry(MX35, _id, _hwid, SZ_16K) + imx_flexcan_data_entry(MX35, "imx35-flexcan", _id, _hwid, SZ_16K) imx35_flexcan_data_entry(0, 1), imx35_flexcan_data_entry(1, 2), }; #endif /* ifdef CONFIG_SOC_IMX35 */ +#ifdef CONFIG_SOC_IMX6Q +const struct imx_flexcan_data imx6q_flexcan_data[] __initconst = { +#define imx6q_flexcan_data_entry(_id, _hwid) \ + imx_flexcan_data_entry(MX6Q, "imx6q-flexcan", _id, _hwid, SZ_16K) + imx6q_flexcan_data_entry(0, 1), + imx6q_flexcan_data_entry(1, 2), +}; +#endif /* ifdef CONFIG_SOC_IMX6Q*/ + struct platform_device *__init imx_add_flexcan( const struct imx_flexcan_data *data, const struct flexcan_platform_data *pdata) @@ -53,6 +63,6 @@ struct platform_device *__init imx_add_flexcan( }, }; - return imx_add_platform_device("flexcan", data->id, + return imx_add_platform_device(data->devid, data->id, res, ARRAY_SIZE(res), pdata, sizeof(*pdata)); } diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h index 0dab3ef18799..4b464bbc0231 100755 --- a/arch/arm/plat-mxc/include/mach/devices-common.h +++ b/arch/arm/plat-mxc/include/mach/devices-common.h @@ -40,6 +40,7 @@ struct platform_device *__init imx_add_fec( #include <linux/can/platform/flexcan.h> struct imx_flexcan_data { + const char *devid; int id; resource_size_t iobase; resource_size_t iosize; diff --git a/arch/arm/plat-mxc/include/mach/mx6.h b/arch/arm/plat-mxc/include/mach/mx6.h index 7ad905890ec7..6658138ae14c 100644 --- a/arch/arm/plat-mxc/include/mach/mx6.h +++ b/arch/arm/plat-mxc/include/mach/mx6.h @@ -156,8 +156,8 @@ #define MX6Q_PWM2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4000) #define MX6Q_PWM3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x8000) #define MX6Q_PWM4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0xC000) -#define CAN1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x10000) -#define CAN2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x14000) +#define MX6Q_CAN1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x10000) +#define MX6Q_CAN2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x14000) #define GPT_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x18000) #define GPIO1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x1C000) #define GPIO2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x20000) @@ -389,8 +389,8 @@ #define MXC_INT_INTERRUPT_139_NUM 139 #define MXC_INT_TZASC1 140 #define MXC_INT_TZASC2 141 -#define MXC_INT_CAN1 142 -#define MXC_INT_CAN2 143 +#define MX6Q_INT_CAN1 142 +#define MX6Q_INT_CAN2 143 #define MXC_INT_PERFMON1 144 #define MXC_INT_PERFMON2 145 #define MXC_INT_PERFMON3 146 |