Kirkwood: Add support for 6282 based QNAP devices
authorMartin Michlmayr <tbm@cyrius.com>
Mon, 6 Dec 2010 21:53:16 +0000 (21:53 +0000)
committerNicolas Pitre <nico@fluxnic.net>
Tue, 7 Dec 2010 18:50:14 +0000 (13:50 -0500)
Add support for the QNAP NAS devices based on Marvell's 6282 Kirkwood
chip (TS-119P+, TS-219P+ and TS-419P+).  The differences to the 6281
based devices are:
 - Ethernet PHY address
 - GPIOs used for buttons (TS-119P+/TS-219P+)

Signed-off-by: Martin Michlmayr <tbm@cyrius.com>
Acked-by: Saeed Bishara <saeed.bishara@gmail.com>
Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
arch/arm/mach-kirkwood/Kconfig
arch/arm/mach-kirkwood/ts219-setup.c
arch/arm/mach-kirkwood/ts41x-setup.c

index 3410633..7fc603b 100644 (file)
@@ -45,18 +45,18 @@ config MACH_GURUPLUG
          Marvell GuruPlug Reference Board.
 
 config MACH_TS219
-       bool "QNAP TS-110, TS-119, TS-210, TS-219 and TS-219P Turbo NAS"
+       bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
        help
          Say 'Y' here if you want your kernel to support the
-         QNAP TS-110, TS-119, TS-210, TS-219 and TS-219P Turbo NAS
-         devices.
+         QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and
+         TS-219P+ Turbo NAS devices.
 
 config MACH_TS41X
-       bool "QNAP TS-410, TS-410U, TS-419P and TS-419U Turbo NAS"
+       bool "QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo NAS"
        help
          Say 'Y' here if you want your kernel to support the
-         QNAP TS-410, TS-410U, TS-419P and TS-419U Turbo NAS
-         devices.
+         QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo
+         NAS devices.
 
 config MACH_DOCKSTAR
        bool "Seagate FreeAgent DockStar"
index 6710bd7..dc999c4 100644 (file)
@@ -80,15 +80,19 @@ static unsigned int qnap_ts219_mpp_config[] __initdata = {
        MPP11_UART0_RXD,
        MPP13_UART1_TXD,        /* PIC controller */
        MPP14_UART1_RXD,        /* PIC controller */
-       MPP15_GPIO,             /* USB Copy button */
-       MPP16_GPIO,             /* Reset button */
+       MPP15_GPIO,             /* USB Copy button (on devices with 88F6281) */
+       MPP16_GPIO,             /* Reset button (on devices with 88F6281) */
        MPP36_GPIO,             /* RAM: 0: 256 MB, 1: 512 MB */
+       MPP37_GPIO,             /* Reset button (on devices with 88F6282) */
+       MPP43_GPIO,             /* USB Copy button (on devices with 88F6282) */
        MPP44_GPIO,             /* Board ID: 0: TS-11x, 1: TS-21x */
        0
 };
 
 static void __init qnap_ts219_init(void)
 {
+       u32 dev, rev;
+
        /*
         * Basic setup. Needs to be called early.
         */
@@ -100,6 +104,14 @@ static void __init qnap_ts219_init(void)
        qnap_tsx1x_register_flash();
        kirkwood_i2c_init();
        i2c_register_board_info(0, &qnap_ts219_i2c_rtc, 1);
+
+       kirkwood_pcie_id(&dev, &rev);
+       if (dev == MV88F6282_DEV_ID) {
+               qnap_ts219_buttons[0].gpio = 43; /* USB Copy button */
+               qnap_ts219_buttons[1].gpio = 37; /* Reset button */
+               qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
+       }
+
        kirkwood_ge00_init(&qnap_ts219_ge00_data);
        kirkwood_sata_init(&qnap_ts219_sata_data);
        kirkwood_ehci_init();
index 3587a28..9a44029 100644 (file)
@@ -119,6 +119,8 @@ static unsigned int qnap_ts41x_mpp_config[] __initdata = {
 
 static void __init qnap_ts41x_init(void)
 {
+       u32 dev, rev;
+
        /*
         * Basic setup. Needs to be called early.
         */
@@ -130,8 +132,15 @@ static void __init qnap_ts41x_init(void)
        qnap_tsx1x_register_flash();
        kirkwood_i2c_init();
        i2c_register_board_info(0, &qnap_ts41x_i2c_rtc, 1);
+
+       kirkwood_pcie_id(&dev, &rev);
+       if (dev == MV88F6282_DEV_ID) {
+               qnap_ts41x_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
+               qnap_ts41x_ge01_data.phy_addr = MV643XX_ETH_PHY_ADDR(1);
+       }
        kirkwood_ge00_init(&qnap_ts41x_ge00_data);
        kirkwood_ge01_init(&qnap_ts41x_ge01_data);
+
        kirkwood_sata_init(&qnap_ts41x_sata_data);
        kirkwood_ehci_init();
        platform_device_register(&qnap_ts41x_button_device);