From 2677d64a6610dfe5de44d9c8e44aec31ce6bd5a5 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Fri, 11 Mar 2011 10:21:19 -0600 Subject: linux-2.6.32: use board patch for mtcdp-embedded --- .../linux-2.6.32.3-mach-at91-mtcdp-embedded.patch | 363 +++++++++++++++++++++ .../mtcdp-embedded/linux-2.6.32.3-mach-at91.patch | 363 --------------------- recipes/linux/linux_2.6.32.bb | 2 +- 3 files changed, 364 insertions(+), 364 deletions(-) create mode 100644 recipes/linux/linux-2.6.32/mtcdp-embedded/linux-2.6.32.3-mach-at91-mtcdp-embedded.patch delete mode 100644 recipes/linux/linux-2.6.32/mtcdp-embedded/linux-2.6.32.3-mach-at91.patch diff --git a/recipes/linux/linux-2.6.32/mtcdp-embedded/linux-2.6.32.3-mach-at91-mtcdp-embedded.patch b/recipes/linux/linux-2.6.32/mtcdp-embedded/linux-2.6.32.3-mach-at91-mtcdp-embedded.patch new file mode 100644 index 0000000000..315fe05347 --- /dev/null +++ b/recipes/linux/linux-2.6.32/mtcdp-embedded/linux-2.6.32.3-mach-at91-mtcdp-embedded.patch @@ -0,0 +1,363 @@ +diff -uprN -X linux-2.6.32.3/Documentation/dontdiff linux-2.6.32.3-vanilla/arch/arm/mach-at91/at91sam9260_devices.c linux-2.6.32.3/arch/arm/mach-at91/at91sam9260_devices.c +--- linux-2.6.32.3-vanilla/arch/arm/mach-at91/at91sam9260_devices.c 2010-01-06 17:07:45.000000000 -0600 ++++ linux-2.6.32.3/arch/arm/mach-at91/at91sam9260_devices.c 2010-10-11 10:15:08.000000000 -0500 +@@ -183,9 +183,9 @@ void __init at91_add_device_eth(struct a + at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */ + at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */ + at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */ +- at91_set_B_periph(AT91_PIN_PA23, 0); /* ETX2 */ +- at91_set_B_periph(AT91_PIN_PA24, 0); /* ETX3 */ +- at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */ ++ at91_set_B_periph(AT91_PIN_PA10, 0); /* ETX2 */ ++ at91_set_B_periph(AT91_PIN_PA11, 0); /* ETX3 */ ++ /*at91_set_B_periph(AT91_PIN_PA22, 0);*/ /* ETXER */ + } + + eth_data = *data; +@@ -571,7 +571,15 @@ static struct platform_device at91sam926 + .num_resources = ARRAY_SIZE(spi1_resources), + }; + +-static const unsigned spi1_standard_cs[4] = { AT91_PIN_PB3, AT91_PIN_PC5, AT91_PIN_PC4, AT91_PIN_PC3 }; ++static const unsigned spi1_standard_cs[7] = { ++ AT91_PIN_PB21, //cdp-embedded mapped to this one instead of AT91_PIN_PB3, ++ AT91_PIN_PC5, ++ AT91_PIN_PC4, ++ AT91_PIN_PC6, ++ AT91_PIN_PB12, ++ AT91_PIN_PB13, ++ AT91_PIN_PB16 ++}; + + void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) + { +diff -uprN -X linux-2.6.32.3/Documentation/dontdiff linux-2.6.32.3-vanilla/arch/arm/mach-at91/board-sam9g20ek.c linux-2.6.32.3/arch/arm/mach-at91/board-sam9g20ek.c +--- linux-2.6.32.3-vanilla/arch/arm/mach-at91/board-sam9g20ek.c 2010-01-06 17:07:45.000000000 -0600 ++++ linux-2.6.32.3/arch/arm/mach-at91/board-sam9g20ek.c 2010-10-14 16:16:52.000000000 -0500 +@@ -27,6 +27,11 @@ + #include + #include + #include ++#include ++#include ++#include ++#include ++#include + + #include + #include +@@ -44,9 +49,12 @@ + #include "sam9_smc.h" + #include "generic.h" + ++static int i2c_present; + + static void __init ek_map_io(void) + { ++ int tmp; ++ + /* Initialize processor: 18.432 MHz crystal */ + at91sam9260_initialize(18432000); + +@@ -61,12 +69,55 @@ static void __init ek_map_io(void) + /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ + at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); + ++ /* ++ * Reset any initiated i2c data transfers? ++ */ ++ at91_set_gpio_input(AT91_PIN_PA23, 0); ++ at91_set_gpio_output(AT91_PIN_PA24, 0); ++ for (tmp = 0; tmp < 11; tmp++) { ++ at91_set_gpio_value(AT91_PIN_PA24, 0); ++ udelay(20); ++ at91_set_gpio_value(AT91_PIN_PA24, 1); ++ udelay(20); ++ } ++ at91_set_gpio_input(AT91_PIN_PA24, 0); ++ ++ /* ++ * PA24 and PA23 are used as ID pins on MTCBA/MTCDP-0.0 and I2C pins on MTCDP-1.0. ++ * ++ * MTCBA Rev. B: 0x01, C: 0x02, D: 0x03 ++ * MTCDP Rev. A reads as 0x00 with TWCK and TWD pulled high ++ * ++ */ ++ tmp = !at91_get_gpio_value(AT91_PIN_PA24) << 1 | !at91_get_gpio_value(AT91_PIN_PA23); ++ ++ i2c_present = !tmp; ++ ++ /* ++ * The GPS receiver is either at US2 on MTCBA/MTCDP-0.0 and US3 on MTCDP-1.0. ++ */ ++ if (i2c_present) { ++ at91_register_uart(AT91SAM9260_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS); ++ printk(KERN_INFO "sam9g20: i2c available\n"); ++ } else { ++ at91_register_uart(AT91SAM9260_ID_US2, 3, 0); ++ printk(KERN_INFO "sam9g20: i2c not available\n"); ++ } ++ + /* set serial console to ttyS0 (ie, DBGU) */ + at91_set_serial_console(0); + } + + static void __init ek_init_irq(void) + { ++ /* ++ * Ensure RTT interrupts are disabled ++ */ ++ u32 mr; ++ mr = __raw_readl(AT91_VA_BASE_SYS + AT91_RTT + AT91_RTT_MR); ++ __raw_writel(mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN), ++ AT91_VA_BASE_SYS + AT91_RTT + AT91_RTT_MR); ++ + at91sam9260_init_interrupts(NULL); + } + +@@ -82,11 +133,38 @@ static struct at91_usbh_data __initdata + * USB Device port + */ + static struct at91_udc_data __initdata ek_udc_data = { +- .vbus_pin = AT91_PIN_PC5, +- .pullup_pin = 0, /* pull-up driven by UDC */ ++ .vbus_pin = AT91_PIN_PC12, ++ .pullup_pin = 0, /* pull-up driven by UDC */ + }; + + ++#define MTS_EXT_AT25_TEST 0 ++#if MTS_EXT_AT25_TEST ++static struct spi_eeprom at25040b = { ++ .byte_len = SZ_4K / 8, ++ .name = "at25040b", ++ .page_size = 8, ++ .flags = EE_ADDR1, ++}; ++#endif ++ ++#define MTS_EXT_STT25_TEST 0 ++#if MTS_EXT_STT25_TEST ++static struct mtd_partition m25_partitions[] = { ++ { ++ .name = "flash", ++ .offset = 0x00000000, ++ .size = MTDPART_SIZ_FULL, ++ }, ++}; ++ ++static struct flash_platform_data m25_spi_flash_data = { ++ .type = "sst25vf080b", ++ .nr_parts = ARRAY_SIZE(m25_partitions), ++ .parts = m25_partitions, ++}; ++#endif ++ + /* + * SPI devices. + */ +@@ -107,6 +185,54 @@ static struct spi_board_info ek_spi_devi + }, + #endif + #endif ++ { ++ .modalias = "mts-io-sout", ++ .chip_select = 0, ++ .bus_num = 1, ++ }, ++ { ++ .modalias = "mts-io-board-temp", ++ .chip_select = 2, ++ .bus_num = 1, ++ }, ++ { ++ .modalias = "mts-io-dout", ++ .chip_select = 1, ++ .bus_num = 1, ++ }, ++ { ++ .modalias = "mts-io-din", ++ .chip_select = 4, ++ .bus_num = 1, ++ }, ++#if MTS_EXT_AT25_TEST ++ { ++ .modalias = "at25", ++ .platform_data = &at25040b, ++ .max_speed_hz = 20 * 1000 * 1000, ++ .bus_num = 1, ++ .chip_select = 5, ++ .mode = SPI_MODE_0, ++ }, ++ { ++ .modalias = "at25", ++ .platform_data = &at25040b, ++ .max_speed_hz = 20 * 1000 * 1000, ++ .bus_num = 1, ++ .chip_select = 6, ++ .mode = SPI_MODE_0, ++ }, ++#endif ++#if MTS_EXT_STT25_TEST ++ { ++ .modalias = "m25p80", ++ .platform_data = &m25_spi_flash_data, ++ .irq = NO_IRQ, ++ .max_speed_hz = 33 * 1000 * 1000, ++ .bus_num = 1, ++ .chip_select = 5, ++ }, ++#endif + }; + + +@@ -115,7 +241,7 @@ static struct spi_board_info ek_spi_devi + */ + static struct at91_eth_data __initdata ek_macb_data = { + .phy_irq_pin = AT91_PIN_PA7, +- .is_rmii = 1, ++ .is_rmii = 0, + }; + + +@@ -124,18 +250,48 @@ static struct at91_eth_data __initdata e + */ + static struct mtd_partition __initdata ek_nand_partition[] = { + { +- .name = "Bootstrap", +- .offset = 0, +- .size = 4 * SZ_1M, ++ .name = "MTNCG-NANDFlash", ++ .offset = 0, ++ .size = 256*1024*1024, ++ }, ++ { ++ .name = "AT91Bootstrap", ++ .offset = 0, ++ .size = 128*1024, + }, + { +- .name = "Partition 1", +- .offset = MTDPART_OFS_NXTBLK, +- .size = 60 * SZ_1M, ++ .name = "UBoot", ++ .offset = 128*1024, ++ .size = 256*1024, + }, + { +- .name = "Partition 2", +- .offset = MTDPART_OFS_NXTBLK, ++ .name = "UBoot Config", ++ .offset = 384*1024, ++ .size = 128*1024, ++ }, ++ { ++ .name = "UBoot Redundant Config", ++ .offset = 512*1024, ++ .size = 128*1024, ++ }, ++ { ++ .name = "uImage", ++ .offset = 640*1024, ++ .size = 59*128*1024, ++ }, ++ { ++ .name = "Config", ++ .offset = 64*128*1024, ++ .size = 64*128*1024, ++ }, ++ { ++ .name = "Oem Config", ++ .offset = 128*128*1024, ++ .size = 64*128*1024, ++ }, ++ { ++ .name = "Rootfs", ++ .offset = 192*128*1024, + .size = MTDPART_SIZ_FULL, + }, + }; +@@ -195,11 +351,13 @@ static void __init ek_add_device_nand(vo + + /* + * MCI (SD/MMC) +- * det_pin, wp_pin and vcc_pin are not connected ++ * det_pin, wp_pin and vcc_pin are not connected for embedded cdp REV0 + */ + static struct at91_mmc_data __initdata ek_mmc_data = { + .slot_b = 1, + .wire4 = 1, ++// .det_pin = AT91_PIN_PA6, ++// .wp_pin = AT91_PIN_PA9, + }; + + +@@ -207,15 +365,10 @@ static struct at91_mmc_data __initdata e + * LEDs + */ + static struct gpio_led ek_leds[] = { +- { /* "bottom" led, green, userled1 to be defined */ +- .name = "ds5", +- .gpio = AT91_PIN_PA6, ++ { /* "status" led, green */ ++ .name = "status", ++ .gpio = AT91_PIN_PA30, + .active_low = 1, +- .default_trigger = "none", +- }, +- { /* "power" led, yellow */ +- .name = "ds1", +- .gpio = AT91_PIN_PA9, + .default_trigger = "heartbeat", + } + }; +@@ -269,15 +422,37 @@ static void __init ek_add_device_buttons + static void __init ek_add_device_buttons(void) {} + #endif + ++uint8_t mts_id_eeprom[512]; ++ ++EXPORT_SYMBOL(mts_id_eeprom); ++ ++static void mts_id_eeprom_load(struct memory_accessor *macc, void *context) ++{ ++ int tmp; ++ ++ memset(mts_id_eeprom, 0, sizeof(mts_id_eeprom)); ++ ++ tmp = macc->read(macc, mts_id_eeprom, 0, sizeof(mts_id_eeprom)); ++ if (tmp != sizeof(mts_id_eeprom)) { ++ printk(KERN_ERR "sam9g20: id eeprom read failed: %d\n", tmp); ++ } else { ++ printk(KERN_INFO "sam9g20: read %d bytes from id eeprom\n", tmp); ++ } ++} ++ ++static struct at24_platform_data at24c04_data = { ++ .byte_len = SZ_4K / 8, ++ .page_size = 16, ++ .setup = mts_id_eeprom_load, ++}; + + static struct i2c_board_info __initdata ek_i2c_devices[] = { + { +- I2C_BOARD_INFO("24c512", 0x50), +- I2C_BOARD_INFO("wm8731", 0x1b), ++ I2C_BOARD_INFO("24c04", 0x56), ++ .platform_data = &at24c04_data, + }, + }; + +- + static void __init ek_board_init(void) + { + /* Serial */ +@@ -303,7 +478,7 @@ static void __init ek_board_init(void) + /* PCK0 provides MCLK to the WM8731 */ + at91_set_B_periph(AT91_PIN_PC1, 0); + /* SSC (for WM8731) */ +- at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX); ++ /* at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX); */ + } + + MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") diff --git a/recipes/linux/linux-2.6.32/mtcdp-embedded/linux-2.6.32.3-mach-at91.patch b/recipes/linux/linux-2.6.32/mtcdp-embedded/linux-2.6.32.3-mach-at91.patch deleted file mode 100644 index a4bcac89ca..0000000000 --- a/recipes/linux/linux-2.6.32/mtcdp-embedded/linux-2.6.32.3-mach-at91.patch +++ /dev/null @@ -1,363 +0,0 @@ -diff -uprN -X linux-2.6.32.3/Documentation/dontdiff linux-2.6.32.3-vanilla/arch/arm/mach-at91/at91sam9260_devices.c linux-2.6.32.3/arch/arm/mach-at91/at91sam9260_devices.c ---- linux-2.6.32.3-vanilla/arch/arm/mach-at91/at91sam9260_devices.c 2010-01-06 17:07:45.000000000 -0600 -+++ linux-2.6.32.3/arch/arm/mach-at91/at91sam9260_devices.c 2010-10-11 10:15:08.000000000 -0500 -@@ -183,9 +183,9 @@ void __init at91_add_device_eth(struct a - at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */ - at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */ - at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */ -- at91_set_B_periph(AT91_PIN_PA23, 0); /* ETX2 */ -- at91_set_B_periph(AT91_PIN_PA24, 0); /* ETX3 */ -- at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */ -+ at91_set_B_periph(AT91_PIN_PA10, 0); /* ETX2 */ -+ at91_set_B_periph(AT91_PIN_PA11, 0); /* ETX3 */ -+ /*at91_set_B_periph(AT91_PIN_PA22, 0);*/ /* ETXER */ - } - - eth_data = *data; -@@ -571,7 +571,15 @@ static struct platform_device at91sam926 - .num_resources = ARRAY_SIZE(spi1_resources), - }; - --static const unsigned spi1_standard_cs[4] = { AT91_PIN_PB3, AT91_PIN_PC5, AT91_PIN_PC4, AT91_PIN_PC3 }; -+static const unsigned spi1_standard_cs[7] = { -+ AT91_PIN_PB3, -+ AT91_PIN_PC5, -+ AT91_PIN_PC4, -+ AT91_PIN_PC6, -+ AT91_PIN_PB12, -+ AT91_PIN_PB13, -+ AT91_PIN_PB16 -+}; - - void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) - { -diff -uprN -X linux-2.6.32.3/Documentation/dontdiff linux-2.6.32.3-vanilla/arch/arm/mach-at91/board-sam9g20ek.c linux-2.6.32.3/arch/arm/mach-at91/board-sam9g20ek.c ---- linux-2.6.32.3-vanilla/arch/arm/mach-at91/board-sam9g20ek.c 2010-01-06 17:07:45.000000000 -0600 -+++ linux-2.6.32.3/arch/arm/mach-at91/board-sam9g20ek.c 2010-10-14 16:16:52.000000000 -0500 -@@ -27,6 +27,11 @@ - #include - #include - #include -+#include -+#include -+#include -+#include -+#include - - #include - #include -@@ -44,9 +49,12 @@ - #include "sam9_smc.h" - #include "generic.h" - -+static int i2c_present; - - static void __init ek_map_io(void) - { -+ int tmp; -+ - /* Initialize processor: 18.432 MHz crystal */ - at91sam9260_initialize(18432000); - -@@ -61,12 +69,55 @@ static void __init ek_map_io(void) - /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ - at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); - -+ /* -+ * Reset any initiated i2c data transfers? -+ */ -+ at91_set_gpio_input(AT91_PIN_PA23, 0); -+ at91_set_gpio_output(AT91_PIN_PA24, 0); -+ for (tmp = 0; tmp < 11; tmp++) { -+ at91_set_gpio_value(AT91_PIN_PA24, 0); -+ udelay(20); -+ at91_set_gpio_value(AT91_PIN_PA24, 1); -+ udelay(20); -+ } -+ at91_set_gpio_input(AT91_PIN_PA24, 0); -+ -+ /* -+ * PA24 and PA23 are used as ID pins on MTCBA/MTCDP-0.0 and I2C pins on MTCDP-1.0. -+ * -+ * MTCBA Rev. B: 0x01, C: 0x02, D: 0x03 -+ * MTCDP Rev. A reads as 0x00 with TWCK and TWD pulled high -+ * -+ */ -+ tmp = !at91_get_gpio_value(AT91_PIN_PA24) << 1 | !at91_get_gpio_value(AT91_PIN_PA23); -+ -+ i2c_present = !tmp; -+ -+ /* -+ * The GPS receiver is either at US2 on MTCBA/MTCDP-0.0 and US3 on MTCDP-1.0. -+ */ -+ if (i2c_present) { -+ at91_register_uart(AT91SAM9260_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS); -+ printk(KERN_INFO "sam9g20: i2c available\n"); -+ } else { -+ at91_register_uart(AT91SAM9260_ID_US2, 3, 0); -+ printk(KERN_INFO "sam9g20: i2c not available\n"); -+ } -+ - /* set serial console to ttyS0 (ie, DBGU) */ - at91_set_serial_console(0); - } - - static void __init ek_init_irq(void) - { -+ /* -+ * Ensure RTT interrupts are disabled -+ */ -+ u32 mr; -+ mr = __raw_readl(AT91_VA_BASE_SYS + AT91_RTT + AT91_RTT_MR); -+ __raw_writel(mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN), -+ AT91_VA_BASE_SYS + AT91_RTT + AT91_RTT_MR); -+ - at91sam9260_init_interrupts(NULL); - } - -@@ -82,11 +133,38 @@ static struct at91_usbh_data __initdata - * USB Device port - */ - static struct at91_udc_data __initdata ek_udc_data = { -- .vbus_pin = AT91_PIN_PC5, -- .pullup_pin = 0, /* pull-up driven by UDC */ -+ .vbus_pin = AT91_PIN_PC12, -+ .pullup_pin = 0, /* pull-up driven by UDC */ - }; - - -+#define MTS_EXT_AT25_TEST 0 -+#if MTS_EXT_AT25_TEST -+static struct spi_eeprom at25040b = { -+ .byte_len = SZ_4K / 8, -+ .name = "at25040b", -+ .page_size = 8, -+ .flags = EE_ADDR1, -+}; -+#endif -+ -+#define MTS_EXT_STT25_TEST 0 -+#if MTS_EXT_STT25_TEST -+static struct mtd_partition m25_partitions[] = { -+ { -+ .name = "flash", -+ .offset = 0x00000000, -+ .size = MTDPART_SIZ_FULL, -+ }, -+}; -+ -+static struct flash_platform_data m25_spi_flash_data = { -+ .type = "sst25vf080b", -+ .nr_parts = ARRAY_SIZE(m25_partitions), -+ .parts = m25_partitions, -+}; -+#endif -+ - /* - * SPI devices. - */ -@@ -107,6 +185,54 @@ static struct spi_board_info ek_spi_devi - }, - #endif - #endif -+ { -+ .modalias = "mts-io-sout", -+ .chip_select = 0, -+ .bus_num = 1, -+ }, -+ { -+ .modalias = "mts-io-board-temp", -+ .chip_select = 2, -+ .bus_num = 1, -+ }, -+ { -+ .modalias = "mts-io-dout", -+ .chip_select = 1, -+ .bus_num = 1, -+ }, -+ { -+ .modalias = "mts-io-din", -+ .chip_select = 4, -+ .bus_num = 1, -+ }, -+#if MTS_EXT_AT25_TEST -+ { -+ .modalias = "at25", -+ .platform_data = &at25040b, -+ .max_speed_hz = 20 * 1000 * 1000, -+ .bus_num = 1, -+ .chip_select = 5, -+ .mode = SPI_MODE_0, -+ }, -+ { -+ .modalias = "at25", -+ .platform_data = &at25040b, -+ .max_speed_hz = 20 * 1000 * 1000, -+ .bus_num = 1, -+ .chip_select = 6, -+ .mode = SPI_MODE_0, -+ }, -+#endif -+#if MTS_EXT_STT25_TEST -+ { -+ .modalias = "m25p80", -+ .platform_data = &m25_spi_flash_data, -+ .irq = NO_IRQ, -+ .max_speed_hz = 33 * 1000 * 1000, -+ .bus_num = 1, -+ .chip_select = 5, -+ }, -+#endif - }; - - -@@ -115,7 +241,7 @@ static struct spi_board_info ek_spi_devi - */ - static struct at91_eth_data __initdata ek_macb_data = { - .phy_irq_pin = AT91_PIN_PA7, -- .is_rmii = 1, -+ .is_rmii = 0, - }; - - -@@ -124,18 +250,48 @@ static struct at91_eth_data __initdata e - */ - static struct mtd_partition __initdata ek_nand_partition[] = { - { -- .name = "Bootstrap", -- .offset = 0, -- .size = 4 * SZ_1M, -+ .name = "MTNCG-NANDFlash", -+ .offset = 0, -+ .size = 256*1024*1024, -+ }, -+ { -+ .name = "AT91Bootstrap", -+ .offset = 0, -+ .size = 128*1024, - }, - { -- .name = "Partition 1", -- .offset = MTDPART_OFS_NXTBLK, -- .size = 60 * SZ_1M, -+ .name = "UBoot", -+ .offset = 128*1024, -+ .size = 256*1024, - }, - { -- .name = "Partition 2", -- .offset = MTDPART_OFS_NXTBLK, -+ .name = "UBoot Config", -+ .offset = 384*1024, -+ .size = 128*1024, -+ }, -+ { -+ .name = "UBoot Redundant Config", -+ .offset = 512*1024, -+ .size = 128*1024, -+ }, -+ { -+ .name = "uImage", -+ .offset = 640*1024, -+ .size = 59*128*1024, -+ }, -+ { -+ .name = "Config", -+ .offset = 64*128*1024, -+ .size = 64*128*1024, -+ }, -+ { -+ .name = "Oem Config", -+ .offset = 128*128*1024, -+ .size = 64*128*1024, -+ }, -+ { -+ .name = "Rootfs", -+ .offset = 192*128*1024, - .size = MTDPART_SIZ_FULL, - }, - }; -@@ -195,11 +351,13 @@ static void __init ek_add_device_nand(vo - - /* - * MCI (SD/MMC) -- * det_pin, wp_pin and vcc_pin are not connected -+ * vcc_pin is not connected - */ - static struct at91_mmc_data __initdata ek_mmc_data = { - .slot_b = 1, - .wire4 = 1, -+ .det_pin = AT91_PIN_PA6, -+ .wp_pin = AT91_PIN_PA9, - }; - - -@@ -207,15 +365,10 @@ static struct at91_mmc_data __initdata e - * LEDs - */ - static struct gpio_led ek_leds[] = { -- { /* "bottom" led, green, userled1 to be defined */ -- .name = "ds5", -- .gpio = AT91_PIN_PA6, -+ { /* "status" led, green */ -+ .name = "status", -+ .gpio = AT91_PIN_PA30, - .active_low = 1, -- .default_trigger = "none", -- }, -- { /* "power" led, yellow */ -- .name = "ds1", -- .gpio = AT91_PIN_PA9, - .default_trigger = "heartbeat", - } - }; -@@ -269,15 +422,37 @@ static void __init ek_add_device_buttons - static void __init ek_add_device_buttons(void) {} - #endif - -+uint8_t mts_id_eeprom[512]; -+ -+EXPORT_SYMBOL(mts_id_eeprom); -+ -+static void mts_id_eeprom_load(struct memory_accessor *macc, void *context) -+{ -+ int tmp; -+ -+ memset(mts_id_eeprom, 0, sizeof(mts_id_eeprom)); -+ -+ tmp = macc->read(macc, mts_id_eeprom, 0, sizeof(mts_id_eeprom)); -+ if (tmp != sizeof(mts_id_eeprom)) { -+ printk(KERN_ERR "sam9g20: id eeprom read failed: %d\n", tmp); -+ } else { -+ printk(KERN_INFO "sam9g20: read %d bytes from id eeprom\n", tmp); -+ } -+} -+ -+static struct at24_platform_data at24c04_data = { -+ .byte_len = SZ_4K / 8, -+ .page_size = 16, -+ .setup = mts_id_eeprom_load, -+}; - - static struct i2c_board_info __initdata ek_i2c_devices[] = { - { -- I2C_BOARD_INFO("24c512", 0x50), -- I2C_BOARD_INFO("wm8731", 0x1b), -+ I2C_BOARD_INFO("24c04", 0x56), -+ .platform_data = &at24c04_data, - }, - }; - -- - static void __init ek_board_init(void) - { - /* Serial */ -@@ -303,7 +478,7 @@ static void __init ek_board_init(void) - /* PCK0 provides MCLK to the WM8731 */ - at91_set_B_periph(AT91_PIN_PC1, 0); - /* SSC (for WM8731) */ -- at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX); -+ /* at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX); */ - } - - MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") diff --git a/recipes/linux/linux_2.6.32.bb b/recipes/linux/linux_2.6.32.bb index bd72b61ba4..7e8b65e0e2 100644 --- a/recipes/linux/linux_2.6.32.bb +++ b/recipes/linux/linux_2.6.32.bb @@ -43,7 +43,7 @@ SRC_URI_mtcdp = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;n SRC_URI_mtcdp-embedded = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;name=kernel \ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/patch-${PV}.3.bz2;patch=1;name=build \ file://defconfig \ - file://linux-2.6.32.3-mach-at91.patch;patch=1 \ + file://linux-2.6.32.3-mach-at91-mtcdp-embedded.patch;patch=1 \ file://linux-2.6.32.3-option.patch;patch=1 \ file://linux-2.6.32.3-sierra.patch;patch=1 \ file://linux-2.6.32.3-atmel_spi.patch;patch=1 \ -- cgit v1.2.3