1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-10-04 14:16:01 +03:00

[ixp4xx] clean up Avila/Cambria patches

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11254 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
juhosg 2008-05-24 11:25:35 +00:00
parent 5b8653e189
commit c1b0377035
3 changed files with 141 additions and 142 deletions

View File

@ -129,7 +129,7 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c +++ linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
@@ -0,0 +1,445 @@ @@ -0,0 +1,444 @@
+/* +/*
+ * arch/arm/mach-ixp4xx/cambria-setup.c + * arch/arm/mach-ixp4xx/cambria-setup.c
+ * + *
@ -170,8 +170,8 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+#include <asm/mach/flash.h> +#include <asm/mach/flash.h>
+ +
+struct cambria_board_info { +struct cambria_board_info {
+ unsigned char *model; + unsigned char *model;
+ void (* setup)(void); + void (* setup)(void);
+}; +};
+ +
+static struct cambria_board_info *cambria_info __initdata; +static struct cambria_board_info *cambria_info __initdata;
@ -203,7 +203,7 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+static struct platform_device cambria_i2c_gpio = { +static struct platform_device cambria_i2c_gpio = {
+ .name = "i2c-gpio", + .name = "i2c-gpio",
+ .id = 0, + .id = 0,
+ .dev = { + .dev = {
+ .platform_data = &cambria_i2c_gpio_data, + .platform_data = &cambria_i2c_gpio_data,
+ }, + },
+}; +};
@ -230,7 +230,7 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+static struct platform_device cambria_uart = { +static struct platform_device cambria_uart = {
+ .name = "serial8250", + .name = "serial8250",
+ .id = PLAT8250_DEV_PLATFORM, + .id = PLAT8250_DEV_PLATFORM,
+ .dev = { + .dev = {
+ .platform_data = cambria_uart_data, + .platform_data = cambria_uart_data,
+ }, + },
+ .num_resources = 1, + .num_resources = 1,
@ -266,145 +266,144 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+}; +};
+ +
+static struct eth_plat_info cambria_npec_data = { +static struct eth_plat_info cambria_npec_data = {
+ .phy = 2, + .phy = 2,
+ .rxq = 4, + .rxq = 4,
+ .txreadyq = 21, + .txreadyq = 21,
+}; +};
+ +
+static struct eth_plat_info cambria_npea_data = { +static struct eth_plat_info cambria_npea_data = {
+ .phy = 1, + .phy = 1,
+ .rxq = 2, + .rxq = 2,
+ .txreadyq = 19, + .txreadyq = 19,
+}; +};
+ +
+static struct platform_device cambria_npec_device = { +static struct platform_device cambria_npec_device = {
+ .name = "ixp4xx_eth", + .name = "ixp4xx_eth",
+ .id = IXP4XX_ETH_NPEC, + .id = IXP4XX_ETH_NPEC,
+ .dev.platform_data = &cambria_npec_data, + .dev.platform_data = &cambria_npec_data,
+}; +};
+ +
+static struct platform_device cambria_npea_device = { +static struct platform_device cambria_npea_device = {
+ .name = "ixp4xx_eth", + .name = "ixp4xx_eth",
+ .id = IXP4XX_ETH_NPEA, + .id = IXP4XX_ETH_NPEA,
+ .dev.platform_data = &cambria_npea_data, + .dev.platform_data = &cambria_npea_data,
+}; +};
+ +
+static struct gpio_led cambria_gpio_leds[] = { +static struct gpio_led cambria_gpio_leds[] = {
+ { + {
+ .name = "user", /* green led */ + .name = "user", /* green led */
+ .gpio = 5, + .gpio = 5,
+ .active_low = 1, + .active_low = 1,
+ } + }
+}; +};
+ +
+static struct gpio_led_platform_data cambria_gpio_leds_data = { +static struct gpio_led_platform_data cambria_gpio_leds_data = {
+ .num_leds = 1, + .num_leds = 1,
+ .leds = cambria_gpio_leds, + .leds = cambria_gpio_leds,
+}; +};
+ +
+static struct platform_device cambria_gpio_leds_device = { +static struct platform_device cambria_gpio_leds_device = {
+ .name = "leds-gpio", + .name = "leds-gpio",
+ .id = -1, + .id = -1,
+ .dev.platform_data = &cambria_gpio_leds_data, + .dev.platform_data = &cambria_gpio_leds_data,
+}; +};
+ +
+ +
+static struct latch_led cambria_latch_leds[] = { +static struct latch_led cambria_latch_leds[] = {
+ { + {
+ .name = "ledA", /* green led */ + .name = "ledA", /* green led */
+ .bit = 0, + .bit = 0,
+ }, + },
+ { + {
+ .name = "ledB", /* green led */ + .name = "ledB", /* green led */
+ .bit = 1, + .bit = 1,
+ }, + },
+ { + {
+ .name = "ledC", /* green led */ + .name = "ledC", /* green led */
+ .bit = 2, + .bit = 2,
+ }, + },
+ { + {
+ .name = "ledD", /* green led */ + .name = "ledD", /* green led */
+ .bit = 3, + .bit = 3,
+ }, + },
+ { + {
+ .name = "ledE", /* green led */ + .name = "ledE", /* green led */
+ .bit = 4, + .bit = 4,
+ }, + },
+ { + {
+ .name = "ledF", /* green led */ + .name = "ledF", /* green led */
+ .bit = 5, + .bit = 5,
+ }, + },
+ { + {
+ .name = "ledG", /* green led */ + .name = "ledG", /* green led */
+ .bit = 6, + .bit = 6,
+ }, + },
+ { + {
+ .name = "ledH", /* green led */ + .name = "ledH", /* green led */
+ .bit = 7, + .bit = 7,
+ } + }
+}; +};
+ +
+static struct latch_led_platform_data cambria_latch_leds_data = { +static struct latch_led_platform_data cambria_latch_leds_data = {
+ .num_leds = 8, + .num_leds = 8,
+ .leds = cambria_latch_leds, + .leds = cambria_latch_leds,
+ .mem = 0x53F40000, + .mem = 0x53F40000,
+}; +};
+ +
+static struct platform_device cambria_latch_leds_device = { +static struct platform_device cambria_latch_leds_device = {
+ .name = "leds-latch", + .name = "leds-latch",
+ .id = -1, + .id = -1,
+ .dev.platform_data = &cambria_latch_leds_data, + .dev.platform_data = &cambria_latch_leds_data,
+}; +};
+ +
+static struct resource cambria_usb0_resources[] = { +static struct resource cambria_usb0_resources[] = {
+ { + {
+ .start = 0xCD000000, + .start = 0xCD000000,
+ .end = 0xCD000300, + .end = 0xCD000300,
+ .flags = IORESOURCE_MEM, + .flags = IORESOURCE_MEM,
+ }, + },
+ { + {
+ .start = 32, + .start = 32,
+ .flags = IORESOURCE_IRQ, + .flags = IORESOURCE_IRQ,
+ }, + },
+}; +};
+ +
+static struct resource cambria_usb1_resources[] = { +static struct resource cambria_usb1_resources[] = {
+ { + {
+ .start = 0xCE000000, + .start = 0xCE000000,
+ .end = 0xCE000300, + .end = 0xCE000300,
+ .flags = IORESOURCE_MEM, + .flags = IORESOURCE_MEM,
+ }, + },
+ { + {
+ .start = 33, + .start = 33,
+ .flags = IORESOURCE_IRQ, + .flags = IORESOURCE_IRQ,
+ }, + },
+}; +};
+ +
+static u64 ehci_dma_mask = ~(u32)0; +static u64 ehci_dma_mask = ~(u32)0;
+ +
+static struct platform_device cambria_usb0_device = { +static struct platform_device cambria_usb0_device = {
+ .name = "ixp4xx-ehci", + .name = "ixp4xx-ehci",
+ .id = 0, + .id = 0,
+ .resource = cambria_usb0_resources,
+ .num_resources = ARRAY_SIZE(cambria_usb0_resources),
+ .dev = { + .dev = {
+ .dma_mask = &ehci_dma_mask, + .dma_mask = &ehci_dma_mask,
+ .coherent_dma_mask = 0xffffffff, + .coherent_dma_mask = 0xffffffff,
+ }, + },
+ .resource = cambria_usb0_resources,
+ .num_resources = 2,
+}; +};
+ +
+static struct platform_device cambria_usb1_device = { +static struct platform_device cambria_usb1_device = {
+ .name = "ixp4xx-ehci", + .name = "ixp4xx-ehci",
+ .id = 1, + .id = 1,
+ .resource = cambria_usb1_resources,
+ .num_resources = ARRAY_SIZE(cambria_usb1_resources),
+ .dev = { + .dev = {
+ .dma_mask = &ehci_dma_mask, + .dma_mask = &ehci_dma_mask,
+ .coherent_dma_mask = 0xffffffff, + .coherent_dma_mask = 0xffffffff,
+ }, + },
+ .resource = cambria_usb1_resources,
+ .num_resources = 2,
+}; +};
+ +
+
+static struct platform_device *cambria_devices[] __initdata = { +static struct platform_device *cambria_devices[] __initdata = {
+ &cambria_i2c_gpio, + &cambria_i2c_gpio,
+ &cambria_flash, + &cambria_flash,
@ -413,15 +412,15 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+ +
+static void __init cambria_gw23xx_setup(void) +static void __init cambria_gw23xx_setup(void)
+{ +{
+ platform_device_register(&cambria_npec_device); + platform_device_register(&cambria_npec_device);
+ platform_device_register(&cambria_npea_device); + platform_device_register(&cambria_npea_device);
+} +}
+ +
+#ifdef CONFIG_SENSORS_EEPROM +#ifdef CONFIG_SENSORS_EEPROM
+static void __init cambria_gw2350_setup(void) +static void __init cambria_gw2350_setup(void)
+{ +{
+ platform_device_register(&cambria_npec_device); + platform_device_register(&cambria_npec_device);
+ platform_device_register(&cambria_npea_device); + platform_device_register(&cambria_npea_device);
+ +
+ platform_device_register(&cambria_usb0_device); + platform_device_register(&cambria_usb0_device);
+ platform_device_register(&cambria_usb1_device); + platform_device_register(&cambria_usb1_device);
@ -431,8 +430,8 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+ +
+static void __init cambria_gw2358_setup(void) +static void __init cambria_gw2358_setup(void)
+{ +{
+ platform_device_register(&cambria_npec_device); + platform_device_register(&cambria_npec_device);
+ platform_device_register(&cambria_npea_device); + platform_device_register(&cambria_npea_device);
+ +
+ platform_device_register(&cambria_usb0_device); + platform_device_register(&cambria_usb0_device);
+ platform_device_register(&cambria_usb1_device); + platform_device_register(&cambria_usb1_device);
@ -443,26 +442,26 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+} +}
+ +
+static struct cambria_board_info cambria_boards[] __initdata = { +static struct cambria_board_info cambria_boards[] __initdata = {
+ { + {
+ .model = "GW2350", + .model = "GW2350",
+ .setup = cambria_gw2350_setup, + .setup = cambria_gw2350_setup,
+ }, { + }, {
+ .model = "GW2358", + .model = "GW2358",
+ .setup = cambria_gw2358_setup, + .setup = cambria_gw2358_setup,
+ } + }
+}; +};
+ +
+static struct cambria_board_info * __init cambria_find_board_info(char *model) +static struct cambria_board_info * __init cambria_find_board_info(char *model)
+{ +{
+ int i; + int i;
+ +
+ for (i = 0; i < ARRAY_SIZE(cambria_boards); i++) { + for (i = 0; i < ARRAY_SIZE(cambria_boards); i++) {
+ struct cambria_board_info *info = &cambria_boards[i]; + struct cambria_board_info *info = &cambria_boards[i];
+ if (strncmp(info->model, model, strlen(info->model)) == 0) + if (strncmp(info->model, model, strlen(info->model)) == 0)
+ return info; + return info;
+ } + }
+ +
+ return NULL; + return NULL;
+} +}
+ +
+struct cambria_eeprom_header { +struct cambria_eeprom_header {
@ -477,28 +476,28 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+static int __init cambria_eeprom_notify(struct notifier_block *self, +static int __init cambria_eeprom_notify(struct notifier_block *self,
+ unsigned long event, void *t) + unsigned long event, void *t)
+{ +{
+ struct eeprom_data *ee = t; + struct eeprom_data *ee = t;
+ struct cambria_eeprom_header hdr; + struct cambria_eeprom_header hdr;
+ +
+ if (cambria_info) + if (cambria_info)
+ return NOTIFY_DONE; + return NOTIFY_DONE;
+ +
+ /* The eeprom is at address 0x51 */ + /* The eeprom is at address 0x51 */
+ if (event != EEPROM_REGISTER || ee->client.addr != 0x51) + if (event != EEPROM_REGISTER || ee->client.addr != 0x51)
+ return NOTIFY_DONE; + return NOTIFY_DONE;
+ +
+ ee->attr->read(&ee->client.dev.kobj, ee->attr, (char *)&hdr, + ee->attr->read(&ee->client.dev.kobj, ee->attr, (char *)&hdr,
+ 0, sizeof(hdr)); + 0, sizeof(hdr));
+ +
+ if (hdr.magic[0] != 'G' || hdr.magic[1] != 'W') + if (hdr.magic[0] != 'G' || hdr.magic[1] != 'W')
+ return NOTIFY_DONE; + return NOTIFY_DONE;
+ +
+ memcpy(&cambria_npec_data.hwaddr, hdr.mac0, ETH_ALEN); + memcpy(&cambria_npec_data.hwaddr, hdr.mac0, ETH_ALEN);
+ memcpy(&cambria_npea_data.hwaddr, hdr.mac1, ETH_ALEN); + memcpy(&cambria_npea_data.hwaddr, hdr.mac1, ETH_ALEN);
+ +
+ cambria_info = cambria_find_board_info(hdr.model); + cambria_info = cambria_find_board_info(hdr.model);
+ +
+ return NOTIFY_OK; + return NOTIFY_OK;
+} +}
+ +
+static struct notifier_block cambria_eeprom_notifier __initdata = { +static struct notifier_block cambria_eeprom_notifier __initdata = {
@ -507,12 +506,12 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+ +
+static void __init cambria_register_eeprom_notifier(void) +static void __init cambria_register_eeprom_notifier(void)
+{ +{
+ register_eeprom_notifier(&cambria_eeprom_notifier); + register_eeprom_notifier(&cambria_eeprom_notifier);
+} +}
+ +
+static void __init cambria_unregister_eeprom_notifier(void) +static void __init cambria_unregister_eeprom_notifier(void)
+{ +{
+ unregister_eeprom_notifier(&cambria_eeprom_notifier); + unregister_eeprom_notifier(&cambria_eeprom_notifier);
+} +}
+#else /* CONFIG_SENSORS_EEPROM */ +#else /* CONFIG_SENSORS_EEPROM */
+static inline void cambria_register_eeprom_notifier(void) {}; +static inline void cambria_register_eeprom_notifier(void) {};
@ -545,21 +544,21 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/cambria-setup.c
+ +
+static int __init cambria_model_setup(void) +static int __init cambria_model_setup(void)
+{ +{
+ if (!machine_is_cambria()) + if (!machine_is_cambria())
+ return 0; + return 0;
+ +
+ if (cambria_info) { + if (cambria_info) {
+ printk(KERN_DEBUG "Running on Gateworks Cambria %s\n", + printk(KERN_DEBUG "Running on Gateworks Cambria %s\n",
+ cambria_info->model); + cambria_info->model);
+ cambria_info->setup(); + cambria_info->setup();
+ } else { + } else {
+ printk(KERN_INFO "Unknown/missing Cambria model number" + printk(KERN_INFO "Unknown/missing Cambria model number"
+ " -- defaults will be used\n"); + " -- defaults will be used\n");
+ cambria_gw23xx_setup(); + cambria_gw23xx_setup();
+ } + }
+ +
+ cambria_unregister_eeprom_notifier(); + cambria_unregister_eeprom_notifier();
+ return 0; + return 0;
+} +}
+late_initcall(cambria_model_setup); +late_initcall(cambria_model_setup);
+ +

View File

@ -35,49 +35,49 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/avila-setup.c
+ +
+static struct latch_led avila_latch_leds[] = { +static struct latch_led avila_latch_leds[] = {
+ { + {
+ .name = "led0", /* green led */ + .name = "led0", /* green led */
+ .bit = 0, + .bit = 0,
+ }, + },
+ { + {
+ .name = "led1", /* green led */ + .name = "led1", /* green led */
+ .bit = 1, + .bit = 1,
+ }, + },
+ { + {
+ .name = "led2", /* green led */ + .name = "led2", /* green led */
+ .bit = 2, + .bit = 2,
+ }, + },
+ { + {
+ .name = "led3", /* green led */ + .name = "led3", /* green led */
+ .bit = 3, + .bit = 3,
+ }, + },
+ { + {
+ .name = "led4", /* green led */ + .name = "led4", /* green led */
+ .bit = 4, + .bit = 4,
+ }, + },
+ { + {
+ .name = "led5", /* green led */ + .name = "led5", /* green led */
+ .bit = 5, + .bit = 5,
+ }, + },
+ { + {
+ .name = "led6", /* green led */ + .name = "led6", /* green led */
+ .bit = 6, + .bit = 6,
+ }, + },
+ { + {
+ .name = "led7", /* green led */ + .name = "led7", /* green led */
+ .bit = 7, + .bit = 7,
+ } + }
+}; +};
+ +
+static struct latch_led_platform_data avila_latch_leds_data = { +static struct latch_led_platform_data avila_latch_leds_data = {
+ .num_leds = 8, + .num_leds = 8,
+ .leds = avila_latch_leds, + .leds = avila_latch_leds,
+ .mem = 0x51000000, + .mem = 0x51000000,
+}; +};
+ +
+static struct platform_device avila_latch_leds_device = { +static struct platform_device avila_latch_leds_device = {
+ .name = "leds-latch", + .name = "leds-latch",
+ .id = -1, + .id = -1,
+ .dev.platform_data = &avila_latch_leds_data, + .dev.platform_data = &avila_latch_leds_data,
+}; +};
+ +
static struct platform_device *avila_devices[] __initdata = { static struct platform_device *avila_devices[] __initdata = {

View File

@ -3,7 +3,7 @@ Index: linux-2.6.25.4/arch/arm/mach-ixp4xx/avila-setup.c
--- linux-2.6.25.4.orig/arch/arm/mach-ixp4xx/avila-setup.c --- linux-2.6.25.4.orig/arch/arm/mach-ixp4xx/avila-setup.c
+++ linux-2.6.25.4/arch/arm/mach-ixp4xx/avila-setup.c +++ linux-2.6.25.4/arch/arm/mach-ixp4xx/avila-setup.c
@@ -239,10 +239,28 @@ static struct platform_device avila_latc @@ -239,10 +239,28 @@ static struct platform_device avila_latc
.dev.platform_data = &avila_latch_leds_data, .dev.platform_data = &avila_latch_leds_data,
}; };
+static struct resource avila_gpio_resources[] = { +static struct resource avila_gpio_resources[] = {