Loading arch/arm/mach-kirkwood/rd88f6192-nas-setup.c +6 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ #include <linux/platform_device.h> #include <linux/ata_platform.h> #include <linux/mv643xx_eth.h> #include <linux/gpio.h> #include <linux/spi/flash.h> #include <linux/spi/spi.h> #include <linux/spi/orion_spi.h> Loading Loading @@ -53,6 +54,11 @@ static void __init rd88f6192_init(void) */ kirkwood_init(); orion_gpio_set_valid(RD88F6192_GPIO_USB_VBUS, 1); if (gpio_request(RD88F6192_GPIO_USB_VBUS, "USB VBUS") != 0 || gpio_direction_output(RD88F6192_GPIO_USB_VBUS, 1) != 0) pr_err("RD-88F6192-NAS: failed to setup USB VBUS GPIO\n"); kirkwood_ehci_init(); kirkwood_ge00_init(&rd88f6192_ge00_data); kirkwood_sata_init(&rd88f6192_sata_data); Loading arch/arm/mach-orion5x/dns323-setup.c +27 −6 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include <linux/kernel.h> #include <linux/init.h> #include <linux/delay.h> #include <linux/platform_device.h> #include <linux/pci.h> #include <linux/irq.h> Loading @@ -32,6 +33,7 @@ #define DNS323_GPIO_LED_RIGHT_AMBER 1 #define DNS323_GPIO_LED_LEFT_AMBER 2 #define DNS323_GPIO_SYSTEM_UP 3 #define DNS323_GPIO_LED_POWER 5 #define DNS323_GPIO_OVERTEMP 6 #define DNS323_GPIO_RTC 7 Loading Loading @@ -239,7 +241,7 @@ static struct gpio_led dns323_leds[] = { { .name = "power:blue", .gpio = DNS323_GPIO_LED_POWER, .active_low = 1, .default_state = LEDS_GPIO_DEFSTATE_ON, }, { .name = "right:amber", .gpio = DNS323_GPIO_LED_RIGHT_AMBER, Loading Loading @@ -334,7 +336,7 @@ static struct orion5x_mpp_mode dns323_mv88f5182_mpp_modes[] __initdata = { { 0, MPP_UNUSED }, { 1, MPP_GPIO }, /* right amber LED (sata ch0) */ { 2, MPP_GPIO }, /* left amber LED (sata ch1) */ { 3, MPP_UNUSED }, { 3, MPP_GPIO }, /* system up flag */ { 4, MPP_GPIO }, /* power button LED */ { 5, MPP_GPIO }, /* power button LED */ { 6, MPP_GPIO }, /* GMT G751-2f overtemp */ Loading Loading @@ -372,13 +374,23 @@ static struct i2c_board_info __initdata dns323_i2c_devices[] = { }, }; /* DNS-323 specific power off method */ static void dns323_power_off(void) /* DNS-323 rev. A specific power off method */ static void dns323a_power_off(void) { pr_info("%s: triggering power-off...\n", __func__); gpio_set_value(DNS323_GPIO_POWER_OFF, 1); } /* DNS-323 rev B specific power off method */ static void dns323b_power_off(void) { pr_info("%s: triggering power-off...\n", __func__); /* Pin has to be changed to 1 and back to 0 to do actual power off. */ gpio_set_value(DNS323_GPIO_POWER_OFF, 1); mdelay(100); gpio_set_value(DNS323_GPIO_POWER_OFF, 0); } static void __init dns323_init(void) { /* Setup basic Orion functions. Need to be called early. */ Loading Loading @@ -424,11 +436,20 @@ static void __init dns323_init(void) if (dns323_dev_id() == MV88F5182_DEV_ID) orion5x_sata_init(&dns323_sata_data); /* register dns323 specific power-off method */ /* The 5182 has flag to indicate the system is up. Without this flag * set, power LED will flash and cannot be controlled via leds-gpio. */ if (dns323_dev_id() == MV88F5182_DEV_ID) gpio_set_value(DNS323_GPIO_SYSTEM_UP, 1); /* Register dns323 specific power-off method */ if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 || gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0) pr_err("DNS323: failed to setup power-off GPIO\n"); pm_power_off = dns323_power_off; if (dns323_dev_id() == MV88F5182_DEV_ID) pm_power_off = dns323b_power_off; else pm_power_off = dns323a_power_off; } /* Warning: D-Link uses a wrong mach-type (=526) in their bootloader */ Loading arch/arm/mach-orion5x/wrt350n-v2-setup.c +79 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,9 @@ #include <linux/mtd/physmap.h> #include <linux/mv643xx_eth.h> #include <linux/ethtool.h> #include <linux/leds.h> #include <linux/gpio_keys.h> #include <linux/input.h> #include <net/dsa.h> #include <asm/mach-types.h> #include <asm/gpio.h> Loading @@ -24,6 +27,80 @@ #include "common.h" #include "mpp.h" /* * LEDs attached to GPIO */ static struct gpio_led wrt350n_v2_led_pins[] = { { .name = "wrt350nv2:green:power", .gpio = 0, .active_low = 1, }, { .name = "wrt350nv2:green:security", .gpio = 1, .active_low = 1, }, { .name = "wrt350nv2:orange:power", .gpio = 5, .active_low = 1, }, { .name = "wrt350nv2:green:usb", .gpio = 6, .active_low = 1, }, { .name = "wrt350nv2:green:wireless", .gpio = 7, .active_low = 1, }, }; static struct gpio_led_platform_data wrt350n_v2_led_data = { .leds = wrt350n_v2_led_pins, .num_leds = ARRAY_SIZE(wrt350n_v2_led_pins), }; static struct platform_device wrt350n_v2_leds = { .name = "leds-gpio", .id = -1, .dev = { .platform_data = &wrt350n_v2_led_data, }, }; /* * Buttons attached to GPIO */ static struct gpio_keys_button wrt350n_v2_buttons[] = { { .code = KEY_RESTART, .gpio = 3, .desc = "Reset Button", .active_low = 1, }, { .code = KEY_WLAN, .gpio = 2, .desc = "WPS Button", .active_low = 1, }, }; static struct gpio_keys_platform_data wrt350n_v2_button_data = { .buttons = wrt350n_v2_buttons, .nbuttons = ARRAY_SIZE(wrt350n_v2_buttons), }; static struct platform_device wrt350n_v2_button_device = { .name = "gpio-keys", .id = -1, .num_resources = 0, .dev = { .platform_data = &wrt350n_v2_button_data, }, }; /* * General setup */ static struct orion5x_mpp_mode wrt350n_v2_mpp_modes[] __initdata = { { 0, MPP_GPIO }, /* Power LED green (0=on) */ { 1, MPP_GPIO }, /* Security LED (0=on) */ Loading Loading @@ -140,6 +217,8 @@ static void __init wrt350n_v2_init(void) orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE, WRT350N_V2_NOR_BOOT_SIZE); platform_device_register(&wrt350n_v2_nor_flash); platform_device_register(&wrt350n_v2_leds); platform_device_register(&wrt350n_v2_button_device); } static int __init wrt350n_v2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) Loading arch/arm/plat-orion/pcie.c +6 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,12 @@ static void __init orion_pcie_setup_wins(void __iomem *base, size += cs->size; } /* * Round up 'size' to the nearest power of two. */ if ((size & (size - 1)) != 0) size = 1 << fls(size); /* * Setup BAR[1] to all DRAM banks. */ Loading Loading
arch/arm/mach-kirkwood/rd88f6192-nas-setup.c +6 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ #include <linux/platform_device.h> #include <linux/ata_platform.h> #include <linux/mv643xx_eth.h> #include <linux/gpio.h> #include <linux/spi/flash.h> #include <linux/spi/spi.h> #include <linux/spi/orion_spi.h> Loading Loading @@ -53,6 +54,11 @@ static void __init rd88f6192_init(void) */ kirkwood_init(); orion_gpio_set_valid(RD88F6192_GPIO_USB_VBUS, 1); if (gpio_request(RD88F6192_GPIO_USB_VBUS, "USB VBUS") != 0 || gpio_direction_output(RD88F6192_GPIO_USB_VBUS, 1) != 0) pr_err("RD-88F6192-NAS: failed to setup USB VBUS GPIO\n"); kirkwood_ehci_init(); kirkwood_ge00_init(&rd88f6192_ge00_data); kirkwood_sata_init(&rd88f6192_sata_data); Loading
arch/arm/mach-orion5x/dns323-setup.c +27 −6 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include <linux/kernel.h> #include <linux/init.h> #include <linux/delay.h> #include <linux/platform_device.h> #include <linux/pci.h> #include <linux/irq.h> Loading @@ -32,6 +33,7 @@ #define DNS323_GPIO_LED_RIGHT_AMBER 1 #define DNS323_GPIO_LED_LEFT_AMBER 2 #define DNS323_GPIO_SYSTEM_UP 3 #define DNS323_GPIO_LED_POWER 5 #define DNS323_GPIO_OVERTEMP 6 #define DNS323_GPIO_RTC 7 Loading Loading @@ -239,7 +241,7 @@ static struct gpio_led dns323_leds[] = { { .name = "power:blue", .gpio = DNS323_GPIO_LED_POWER, .active_low = 1, .default_state = LEDS_GPIO_DEFSTATE_ON, }, { .name = "right:amber", .gpio = DNS323_GPIO_LED_RIGHT_AMBER, Loading Loading @@ -334,7 +336,7 @@ static struct orion5x_mpp_mode dns323_mv88f5182_mpp_modes[] __initdata = { { 0, MPP_UNUSED }, { 1, MPP_GPIO }, /* right amber LED (sata ch0) */ { 2, MPP_GPIO }, /* left amber LED (sata ch1) */ { 3, MPP_UNUSED }, { 3, MPP_GPIO }, /* system up flag */ { 4, MPP_GPIO }, /* power button LED */ { 5, MPP_GPIO }, /* power button LED */ { 6, MPP_GPIO }, /* GMT G751-2f overtemp */ Loading Loading @@ -372,13 +374,23 @@ static struct i2c_board_info __initdata dns323_i2c_devices[] = { }, }; /* DNS-323 specific power off method */ static void dns323_power_off(void) /* DNS-323 rev. A specific power off method */ static void dns323a_power_off(void) { pr_info("%s: triggering power-off...\n", __func__); gpio_set_value(DNS323_GPIO_POWER_OFF, 1); } /* DNS-323 rev B specific power off method */ static void dns323b_power_off(void) { pr_info("%s: triggering power-off...\n", __func__); /* Pin has to be changed to 1 and back to 0 to do actual power off. */ gpio_set_value(DNS323_GPIO_POWER_OFF, 1); mdelay(100); gpio_set_value(DNS323_GPIO_POWER_OFF, 0); } static void __init dns323_init(void) { /* Setup basic Orion functions. Need to be called early. */ Loading Loading @@ -424,11 +436,20 @@ static void __init dns323_init(void) if (dns323_dev_id() == MV88F5182_DEV_ID) orion5x_sata_init(&dns323_sata_data); /* register dns323 specific power-off method */ /* The 5182 has flag to indicate the system is up. Without this flag * set, power LED will flash and cannot be controlled via leds-gpio. */ if (dns323_dev_id() == MV88F5182_DEV_ID) gpio_set_value(DNS323_GPIO_SYSTEM_UP, 1); /* Register dns323 specific power-off method */ if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 || gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0) pr_err("DNS323: failed to setup power-off GPIO\n"); pm_power_off = dns323_power_off; if (dns323_dev_id() == MV88F5182_DEV_ID) pm_power_off = dns323b_power_off; else pm_power_off = dns323a_power_off; } /* Warning: D-Link uses a wrong mach-type (=526) in their bootloader */ Loading
arch/arm/mach-orion5x/wrt350n-v2-setup.c +79 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,9 @@ #include <linux/mtd/physmap.h> #include <linux/mv643xx_eth.h> #include <linux/ethtool.h> #include <linux/leds.h> #include <linux/gpio_keys.h> #include <linux/input.h> #include <net/dsa.h> #include <asm/mach-types.h> #include <asm/gpio.h> Loading @@ -24,6 +27,80 @@ #include "common.h" #include "mpp.h" /* * LEDs attached to GPIO */ static struct gpio_led wrt350n_v2_led_pins[] = { { .name = "wrt350nv2:green:power", .gpio = 0, .active_low = 1, }, { .name = "wrt350nv2:green:security", .gpio = 1, .active_low = 1, }, { .name = "wrt350nv2:orange:power", .gpio = 5, .active_low = 1, }, { .name = "wrt350nv2:green:usb", .gpio = 6, .active_low = 1, }, { .name = "wrt350nv2:green:wireless", .gpio = 7, .active_low = 1, }, }; static struct gpio_led_platform_data wrt350n_v2_led_data = { .leds = wrt350n_v2_led_pins, .num_leds = ARRAY_SIZE(wrt350n_v2_led_pins), }; static struct platform_device wrt350n_v2_leds = { .name = "leds-gpio", .id = -1, .dev = { .platform_data = &wrt350n_v2_led_data, }, }; /* * Buttons attached to GPIO */ static struct gpio_keys_button wrt350n_v2_buttons[] = { { .code = KEY_RESTART, .gpio = 3, .desc = "Reset Button", .active_low = 1, }, { .code = KEY_WLAN, .gpio = 2, .desc = "WPS Button", .active_low = 1, }, }; static struct gpio_keys_platform_data wrt350n_v2_button_data = { .buttons = wrt350n_v2_buttons, .nbuttons = ARRAY_SIZE(wrt350n_v2_buttons), }; static struct platform_device wrt350n_v2_button_device = { .name = "gpio-keys", .id = -1, .num_resources = 0, .dev = { .platform_data = &wrt350n_v2_button_data, }, }; /* * General setup */ static struct orion5x_mpp_mode wrt350n_v2_mpp_modes[] __initdata = { { 0, MPP_GPIO }, /* Power LED green (0=on) */ { 1, MPP_GPIO }, /* Security LED (0=on) */ Loading Loading @@ -140,6 +217,8 @@ static void __init wrt350n_v2_init(void) orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE, WRT350N_V2_NOR_BOOT_SIZE); platform_device_register(&wrt350n_v2_nor_flash); platform_device_register(&wrt350n_v2_leds); platform_device_register(&wrt350n_v2_button_device); } static int __init wrt350n_v2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) Loading
arch/arm/plat-orion/pcie.c +6 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,12 @@ static void __init orion_pcie_setup_wins(void __iomem *base, size += cs->size; } /* * Round up 'size' to the nearest power of two. */ if ((size & (size - 1)) != 0) size = 1 << fls(size); /* * Setup BAR[1] to all DRAM banks. */ Loading