diff options
Diffstat (limited to 'multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-mach-at91-mtocgd3.patch')
-rw-r--r-- | multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-mach-at91-mtocgd3.patch | 422 |
1 files changed, 0 insertions, 422 deletions
diff --git a/multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-mach-at91-mtocgd3.patch b/multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-mach-at91-mtocgd3.patch deleted file mode 100644 index 5c1ae8f..0000000 --- a/multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-mach-at91-mtocgd3.patch +++ /dev/null @@ -1,422 +0,0 @@ -Index: linux-2.6.39.4/arch/arm/mach-at91/board-sam9x5cm.c -=================================================================== ---- linux-2.6.39.4.orig/arch/arm/mach-at91/board-sam9x5cm.c 2013-02-19 09:38:45.180035681 -0600 -+++ linux-2.6.39.4/arch/arm/mach-at91/board-sam9x5cm.c 2013-02-27 16:36:25.684073131 -0600 -@@ -18,6 +18,9 @@ - #include <linux/platform_device.h> - #include <linux/spi/flash.h> - #include <linux/spi/spi.h> -+#include <linux/spi/eeprom.h> -+#include <linux/i2c/at24.h> -+#include <linux/delay.h> - #include <linux/fb.h> - #include <linux/gpio_keys.h> - #include <linux/input.h> -@@ -103,6 +106,11 @@ - .irq = -1, - }, - #endif -+ { -+ .modalias = "mts-io-board-temp", -+ .chip_select = 1, -+ .bus_num = 1, -+ }, - #endif - }; - -@@ -111,13 +119,48 @@ - */ - static struct mtd_partition __initdata cm_nand_partition[] = { - { -- .name = "Partition 1", -+ .name = "NANDFlash", -+ .offset = 0, -+ .size = 256*1024*1024, -+ }, -+ { -+ .name = "AT91Bootstrap", - .offset = 0, -- .size = SZ_64M, -+ .size = 256*1024, -+ }, -+ { -+ .name = "UBoot", -+ .offset = 256*1024, -+ .size = 512*1024, -+ }, -+ { -+ .name = "UBoot Config", -+ .offset = 768*1024, -+ .size = 640*1024, -+ }, -+ { -+ .name = "UBoot Redundant Config", -+ .offset = 1408*1024, -+ .size = 640*1024, - }, - { -- .name = "Partition 2", -- .offset = MTDPART_OFS_NXTBLK, -+ .name = "uImage", -+ .offset = 2*1024*1024, -+ .size = 6*1024*1024, -+ }, -+ { -+ .name = "Config", -+ .offset = 8*1024*1024, -+ .size = 8*1024*1024, -+ }, -+ { -+ .name = "Oem Config", -+ .offset = 16*1024*1024, -+ .size = 8*1024*1024, -+ }, -+ { -+ .name = "Rootfs", -+ .offset = 24*1024*1024, - .size = MTDPART_SIZ_FULL, - }, - }; -@@ -135,7 +178,8 @@ - .enable_pin = AT91_PIN_PD4, - .ecc_mode = NAND_ECC_HW, - .has_pmecc = 1, -- .pmecc_corr_cap = 2, -+// MTOCGD3: 4-bit PMECC -+ .pmecc_corr_cap = 4, - .pmecc_sector_size = 512, - .pmecc_lookup_table_offset = 0x8000, - .partition_info = nand_partitions, -@@ -170,7 +214,13 @@ - else - cm_nand_smc_config.mode |= AT91_SMC_DBW_8; - -+ // MTOCGD3 Rev A -+ cm_nand_data.bus_on_d0 = 1; -+ cm_nand_data.rdy_pin = AT91_PIN_PC31; -+ -+ // MTOCGD3: disable - /* revision of board modify NAND wiring */ -+ /* - if (cm_is_revA()) { - cm_nand_data.bus_on_d0 = 1; - cm_nand_data.rdy_pin = AT91_PIN_PD6; -@@ -178,6 +228,7 @@ - cm_nand_data.bus_on_d0 = 0; - cm_nand_data.rdy_pin = AT91_PIN_PD5; - } -+ */ - - /* configure chip-select 3 (NAND) */ - sam9_smc_configure(3, &cm_nand_smc_config); -@@ -189,25 +240,71 @@ - * LEDs - */ - static struct gpio_led cm_leds[] = { -- { /* "left" led, blue, userled1 */ -- .name = "d1", -- .gpio = AT91_PIN_PB18, -+ { /* default status LED */ -+ .name = "led-a", -+ .gpio = AT91_PIN_PA24, -+ .active_low = 1, - .default_trigger = "heartbeat", - }, -- { /* "right" led, red, userled2 */ -- .name = "d2", -- .gpio = AT91_PIN_PD21, -- .active_low = 1, -- .default_trigger = "mmc0", -+ { -+ .name = "led-b", -+ .gpio = AT91_PIN_PA29, -+ .active_low = 1 -+ }, -+ { -+ .name = "led-c", -+ .gpio = AT91_PIN_PA25, -+ .active_low = 1 -+ }, -+ { -+ .name = "led-d", -+ .gpio = AT91_PIN_PA26, -+ .active_low = 1 -+ }, -+ { -+ .name = "led-e", -+ .gpio = AT91_PIN_PA27, -+ .active_low = 1 -+ }, -+ { -+ .name = "led-f", -+ .gpio = AT91_PIN_PA28, -+ .active_low = 1 - }, - }; - -+ -+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 "sam9x5: id eeprom read failed: %d\n", tmp); -+ } else { -+ printk(KERN_INFO "sam9x5: 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, -+}; -+ - /* - * I2C Devices - */ - static struct i2c_board_info __initdata cm_i2c_devices[] = { - { -- I2C_BOARD_INFO("24c512", 0x50) -+ I2C_BOARD_INFO("24c04", 0x56), -+ .platform_data = &at24c04_data, - }, - }; - -@@ -234,8 +331,12 @@ - /* LEDs */ - at91_gpio_leds(cm_leds, ARRAY_SIZE(cm_leds)); - -+ printk(KERN_CRIT "AT91: MTOCGD3 board\n"); -+ -+ /* MTOCGD3: disable - if (cm_is_revA()) - printk(KERN_CRIT "AT91: CM rev A\n"); - else - printk(KERN_CRIT "AT91: CM rev B and higher\n"); -+ */ - } -Index: linux-2.6.39.4/arch/arm/mach-at91/board-sam9x5ek.c -=================================================================== ---- linux-2.6.39.4.orig/arch/arm/mach-at91/board-sam9x5ek.c 2013-02-19 09:38:43.680033046 -0600 -+++ linux-2.6.39.4/arch/arm/mach-at91/board-sam9x5ek.c 2013-02-19 09:38:45.180035681 -0600 -@@ -23,6 +23,7 @@ - #include <linux/leds.h> - #include <linux/clk.h> - #include <linux/delay.h> -+#include <linux/wl12xx.h> - #include <mach/cpu.h> - - #include <video/atmel_lcdfb.h> -@@ -53,12 +54,10 @@ - /* Initialize processor and DBGU */ - cm_map_io(); - -- /* USART0 on ttyS1. (Rx, Tx) */ -- at91_register_uart(AT91SAM9X5_ID_USART0, 1, 0); -- /* USART1 on ttyS2. (Rx, Tx) */ -- at91_register_uart(AT91SAM9X5_ID_USART1, 2, 0); -- /* USART2 on ttyS3. (Rx, Tx) */ -- at91_register_uart(AT91SAM9X5_ID_USART2, 3, 0); -+ // MTOCGD3: GPS on UART0 as ttyS1 with Rx/Tx only -+ at91_register_uart(AT91SAM9X5_ID_UART0, 1, 0); -+ // MTOCGD3 Rev A: Daughter card serial on USART1 as ttyS2 with RTS/CTS -+ at91_register_uart(AT91SAM9X5_ID_USART1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); - } - - /* -@@ -89,34 +88,65 @@ - * MACB Ethernet devices - */ - static struct at91_eth_data __initdata ek_macb0_data = { -- .is_rmii = 1, -+ .is_rmii = 0, -+ .phy_irq_pin = 0, - }; - -+/* MTOCGD3: no macb1 - static struct at91_eth_data __initdata ek_macb1_data = { - .phy_irq_pin = AT91_PIN_PC26, - .is_rmii = 1, - }; -+*/ - - - /* - * MCI (SD/MMC) - */ --/* mci0 detect_pin is revision dependent */ -+// MTOCGD3: MCI0 is BT/Wifi - static struct mci_platform_data __initdata mci0_data = { - .slot[0] = { - .bus_width = 4, -+ .detect_pin = -1, - .wp_pin = -1, - }, - }; - -+// MTOCGD3: MCI1 is SD card slot - static struct mci_platform_data __initdata mci1_data = { - .slot[0] = { - .bus_width = 4, -- .detect_pin = AT91_PIN_PD14, -- .wp_pin = -1, -+ .detect_pin = AT91_PIN_PA1, -+ .wp_pin = AT91_PIN_PA0, - }, - }; - -+// MTR: Wi-fi -+static void wl12xx_enable(int poweron) -+{ -+ if (poweron) { -+ at91_set_gpio_output_with_pullup(AT91_PIN_PC1, 0, 0); -+ msleep(10); -+ at91_set_gpio_output_with_pullup(AT91_PIN_PC1, 1, 0); -+ msleep(100); -+ printk(KERN_INFO "sam9x5: WLAN Enabled\n"); -+ } -+ else { -+ at91_set_gpio_output_with_pullup(AT91_PIN_PC1, 0, 0); -+ msleep(10); -+ printk(KERN_INFO "sam9x5: WLAN Disabled\n"); -+ } -+}; -+ -+// MTR: Wi-fi -+struct wl12xx_platform_data mtr_wlan_data __initdata = { -+ .irq = AT91_PIN_PC2, -+ /* ref clock is 38.4 MHz */ -+ .board_ref_clock = WL12XX_REFCLOCK_38, -+ /* toggles the WLAN_ENABLE pin */ -+ .set_power = wl12xx_enable, -+}; -+ - /* - * ISI - */ -@@ -326,9 +356,11 @@ - * I2C Devices - */ - static struct i2c_board_info __initdata ek_i2c_devices[] = { -+#if 0 - { - I2C_BOARD_INFO("wm8731", 0x1a) - }, -+#endif - #if defined(CONFIG_KEYBOARD_QT1070) - { - I2C_BOARD_INFO("qt1070", 0x1b), -@@ -384,18 +416,24 @@ - bool config_isi_enabled = false; - - cm_board_init(&cm_config); -- ek_board_configure_pins(); -+ // MTOCGD3: disable -+ //ek_board_configure_pins(); - /* Serial */ - at91_add_device_serial(); - /* USB HS Host */ - at91_add_device_usbh_ohci(&ek_usbh_fs_data); - at91_add_device_usbh_ehci(&ek_usbh_hs_data); - /* USB HS Device */ -+ // MTOCGD3: set usb device vcc pin -+ ek_usba_udc_data.vbus_pin = AT91_PIN_PC7; - at91_add_device_usba(&ek_usba_udc_data); - /* Ethernet */ - at91_add_device_eth(0, &ek_macb0_data); -+ /* MTOCGD3: no macb1 - at91_add_device_eth(1, &ek_macb1_data); -+ */ - /* MMC0 */ -+ // MTOCGD3: MCI0 for BT/Wifi - at91_add_device_mci(0, &mci0_data); - /* I2C */ - if (cm_config & CM_CONFIG_I2C0_ENABLE) -@@ -405,6 +443,15 @@ - at91_add_device_i2c(0, - ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices)); - -+ // MTOCGD3: Wi-fi -+ at91_set_gpio_input(mtr_wlan_data.irq, 0); -+ at91_set_deglitch(mtr_wlan_data.irq, 1); -+ -+ if (wl12xx_set_platform_data(&mtr_wlan_data)) -+ pr_err("error setting wl12xx data\n"); -+ -+/* MTOCGD3: no LCD */ -+#if 0 - if (cpu_is_at91sam9g25()) { - /* ISI */ - /* NOTE: PCK0 provides ISI_MCK to the ISI module. -@@ -430,13 +477,10 @@ - /* Touch Screen */ - at91_add_device_tsadcc(&ek_tsadcc_data); - } -+#endif - -- /* MMC1 */ -- /* Conflict between SPI0, MCI1 and ISI pins. -- * add MCI1 only if SPI0 and ISI are both disabled. -- */ -- if (!(cm_config & CM_CONFIG_SPI0_ENABLE) && !config_isi_enabled) -- at91_add_device_mci(1, &mci1_data); -+ // MTOCGD3: MCI1 to SD Card -+ at91_add_device_mci(1, &mci1_data); - - #if 0 - if (cpu_is_at91sam9x25() || cpu_is_at91sam9x35()) -@@ -448,6 +492,8 @@ - at91_add_device_can(0, NULL); - #endif - -+/* MTOCGD3: disable things we don't have */ -+#if 0 - if (cpu_is_at91sam9x25() || cpu_is_at91sam9x35()) - /* this conflicts with usart.1 */ - at91_add_device_can(1, NULL); -@@ -474,6 +520,9 @@ - else if (config_isi_enabled) - printk(KERN_CRIT - "AT91: ISI conficts with MCI1, disable MCI1\n"); -+#endif -+ -+ printk(KERN_CRIT "AT91: MTOCGD3 board EK init\n"); - } - - MACHINE_START(AT91SAM9X5EK, "Atmel AT91SAM9X5-EK") -Index: linux-2.6.39.4/arch/arm/mach-at91/at91sam9x5_devices.c -=================================================================== ---- linux-2.6.39.4.orig/arch/arm/mach-at91/at91sam9x5_devices.c 2013-02-19 09:38:44.680033189 -0600 -+++ linux-2.6.39.4/arch/arm/mach-at91/at91sam9x5_devices.c 2013-02-19 15:28:04.792006181 -0600 -@@ -543,11 +543,11 @@ - #endif - - /* input/irq */ -- if (data->slot[0].detect_pin) { -+ if (data->slot[0].detect_pin > 0) { - at91_set_gpio_input(data->slot[0].detect_pin, 1); - at91_set_deglitch(data->slot[0].detect_pin, 1); - } -- if (data->slot[0].wp_pin) -+ if (data->slot[0].wp_pin > 0) - at91_set_gpio_input(data->slot[0].wp_pin, 1); - - if (mmc_id == 0) { /* MCI0 */ -@@ -849,7 +849,8 @@ - .num_resources = ARRAY_SIZE(spi1_resources), - }; - --static const unsigned spi1_standard_cs[4] = { AT91_PIN_PA8, AT91_PIN_PA0, AT91_PIN_PA31, AT91_PIN_PA30 }; -+// MTOCGD3: SPI1 chip selects on pins SPI1_NCS1 to SPI1_NCS5 -+static const unsigned spi1_standard_cs[5] = { AT91_PIN_PC15, AT91_PIN_PC16, AT91_PIN_PC17, AT91_PIN_PC18, AT91_PIN_PC19 }; - - void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) - { |