Loading arch/arm/mach-mx2/pcm038.c +59 −0 Original line number Original line Diff line number Diff line Loading @@ -21,11 +21,17 @@ #include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h> #include <linux/mtd/plat-ram.h> #include <linux/mtd/plat-ram.h> #include <linux/io.h> #include <linux/io.h> #include <linux/i2c.h> #include <linux/i2c/at24.h> #include <asm/mach/arch.h> #include <asm/mach/arch.h> #include <asm/mach-types.h> #include <asm/mach-types.h> #include <mach/common.h> #include <mach/common.h> #include <mach/hardware.h> #include <mach/hardware.h> #include <mach/iomux.h> #include <mach/iomux.h> #ifdef CONFIG_I2C_IMX #include <mach/i2c.h> #endif #include <asm/mach/time.h> #include <asm/mach/time.h> #include <mach/imx-uart.h> #include <mach/imx-uart.h> #include <mach/board-pcm038.h> #include <mach/board-pcm038.h> Loading Loading @@ -204,6 +210,51 @@ static void __init pcm038_init_sram(void) __raw_writel(0x22220a00, CSCR_A(1)); __raw_writel(0x22220a00, CSCR_A(1)); } } #ifdef CONFIG_I2C_IMX static int mxc_i2c1_pins[] = { PC5_PF_I2C2_SDA, PC6_PF_I2C2_SCL }; static int pcm038_i2c_1_init(struct device *dev) { return mxc_gpio_setup_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins), "I2C1"); } static void pcm038_i2c_1_exit(struct device *dev) { mxc_gpio_release_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins)); } static struct imxi2c_platform_data pcm038_i2c_1_data = { .bitrate = 100000, .init = pcm038_i2c_1_init, .exit = pcm038_i2c_1_exit, }; static struct at24_platform_data board_eeprom = { .byte_len = 4096, .page_size = 32, .flags = AT24_FLAG_ADDR16, }; static struct i2c_board_info pcm038_i2c_devices[] = { [0] = { I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */ .platform_data = &board_eeprom, }, [1] = { I2C_BOARD_INFO("rtc-pcf8563", 0x51), .type = "pcf8563" }, [2] = { I2C_BOARD_INFO("lm75", 0x4a), .type = "lm75" } }; #endif static void __init pcm038_init(void) static void __init pcm038_init(void) { { gpio_fec_active(); gpio_fec_active(); Loading @@ -216,6 +267,14 @@ static void __init pcm038_init(void) mxc_gpio_mode(PE16_AF_OWIRE); mxc_gpio_mode(PE16_AF_OWIRE); mxc_register_device(&mxc_nand_device, &pcm038_nand_board_info); mxc_register_device(&mxc_nand_device, &pcm038_nand_board_info); #ifdef CONFIG_I2C_IMX /* only the i2c master 1 is used on this CPU card */ i2c_register_board_info(1, pcm038_i2c_devices, ARRAY_SIZE(pcm038_i2c_devices)); mxc_register_device(&mxc_i2c_device1, &pcm038_i2c_1_data); #endif platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); #ifdef CONFIG_MACH_PCM970_BASEBOARD #ifdef CONFIG_MACH_PCM970_BASEBOARD Loading Loading
arch/arm/mach-mx2/pcm038.c +59 −0 Original line number Original line Diff line number Diff line Loading @@ -21,11 +21,17 @@ #include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h> #include <linux/mtd/plat-ram.h> #include <linux/mtd/plat-ram.h> #include <linux/io.h> #include <linux/io.h> #include <linux/i2c.h> #include <linux/i2c/at24.h> #include <asm/mach/arch.h> #include <asm/mach/arch.h> #include <asm/mach-types.h> #include <asm/mach-types.h> #include <mach/common.h> #include <mach/common.h> #include <mach/hardware.h> #include <mach/hardware.h> #include <mach/iomux.h> #include <mach/iomux.h> #ifdef CONFIG_I2C_IMX #include <mach/i2c.h> #endif #include <asm/mach/time.h> #include <asm/mach/time.h> #include <mach/imx-uart.h> #include <mach/imx-uart.h> #include <mach/board-pcm038.h> #include <mach/board-pcm038.h> Loading Loading @@ -204,6 +210,51 @@ static void __init pcm038_init_sram(void) __raw_writel(0x22220a00, CSCR_A(1)); __raw_writel(0x22220a00, CSCR_A(1)); } } #ifdef CONFIG_I2C_IMX static int mxc_i2c1_pins[] = { PC5_PF_I2C2_SDA, PC6_PF_I2C2_SCL }; static int pcm038_i2c_1_init(struct device *dev) { return mxc_gpio_setup_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins), "I2C1"); } static void pcm038_i2c_1_exit(struct device *dev) { mxc_gpio_release_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins)); } static struct imxi2c_platform_data pcm038_i2c_1_data = { .bitrate = 100000, .init = pcm038_i2c_1_init, .exit = pcm038_i2c_1_exit, }; static struct at24_platform_data board_eeprom = { .byte_len = 4096, .page_size = 32, .flags = AT24_FLAG_ADDR16, }; static struct i2c_board_info pcm038_i2c_devices[] = { [0] = { I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */ .platform_data = &board_eeprom, }, [1] = { I2C_BOARD_INFO("rtc-pcf8563", 0x51), .type = "pcf8563" }, [2] = { I2C_BOARD_INFO("lm75", 0x4a), .type = "lm75" } }; #endif static void __init pcm038_init(void) static void __init pcm038_init(void) { { gpio_fec_active(); gpio_fec_active(); Loading @@ -216,6 +267,14 @@ static void __init pcm038_init(void) mxc_gpio_mode(PE16_AF_OWIRE); mxc_gpio_mode(PE16_AF_OWIRE); mxc_register_device(&mxc_nand_device, &pcm038_nand_board_info); mxc_register_device(&mxc_nand_device, &pcm038_nand_board_info); #ifdef CONFIG_I2C_IMX /* only the i2c master 1 is used on this CPU card */ i2c_register_board_info(1, pcm038_i2c_devices, ARRAY_SIZE(pcm038_i2c_devices)); mxc_register_device(&mxc_i2c_device1, &pcm038_i2c_1_data); #endif platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); #ifdef CONFIG_MACH_PCM970_BASEBOARD #ifdef CONFIG_MACH_PCM970_BASEBOARD Loading