aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/orion/patches/012-rework_mpp_handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/orion/patches/012-rework_mpp_handling.patch')
-rw-r--r--target/linux/orion/patches/012-rework_mpp_handling.patch583
1 files changed, 0 insertions, 583 deletions
diff --git a/target/linux/orion/patches/012-rework_mpp_handling.patch b/target/linux/orion/patches/012-rework_mpp_handling.patch
deleted file mode 100644
index 05e1881259..0000000000
--- a/target/linux/orion/patches/012-rework_mpp_handling.patch
+++ /dev/null
@@ -1,583 +0,0 @@
-Instead of having board code poke directly into the MPP configuration
-registers, and separately calling orion5x_gpio_set_valid_pins() to
-indicate which MPP pins can be used as GPIO pins, introduce a helper
-function for configuring the roles of each of the MPP pins, and have
-that helper function handle gpio validity internally.
-
-Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
-Acked-by: Sylver Bruneau <sylver.bruneau@googlemail.com>
----
- arch/arm/mach-orion5x/Makefile | 2 +-
- arch/arm/mach-orion5x/common.h | 2 +-
- arch/arm/mach-orion5x/db88f5281-setup.c | 42 +++++----
- arch/arm/mach-orion5x/dns323-setup.c | 50 +++++------
- arch/arm/mach-orion5x/gpio.c | 7 +-
- arch/arm/mach-orion5x/kurobox_pro-setup.c | 41 ++++----
- arch/arm/mach-orion5x/mpp.c | 142 +++++++++++++++++++++++++++++
- arch/arm/mach-orion5x/mpp.h | 63 +++++++++++++
- arch/arm/mach-orion5x/rd88f5182-setup.c | 43 +++++----
- arch/arm/mach-orion5x/ts209-setup.c | 43 +++++----
- 10 files changed, 321 insertions(+), 114 deletions(-)
- create mode 100644 arch/arm/mach-orion5x/mpp.c
- create mode 100644 arch/arm/mach-orion5x/mpp.h
-
---- a/arch/arm/mach-orion5x/Makefile
-+++ b/arch/arm/mach-orion5x/Makefile
-@@ -1,4 +1,4 @@
--obj-y += common.o addr-map.o pci.o gpio.o irq.o
-+obj-y += common.o addr-map.o pci.o gpio.o irq.o mpp.o
- obj-$(CONFIG_MACH_DB88F5281) += db88f5281-setup.o
- obj-$(CONFIG_MACH_RD88F5182) += rd88f5182-setup.o
- obj-$(CONFIG_MACH_KUROBOX_PRO) += kurobox_pro-setup.o
---- a/arch/arm/mach-orion5x/common.h
-+++ b/arch/arm/mach-orion5x/common.h
-@@ -48,7 +48,7 @@
- * Valid GPIO pins according to MPP setup, used by machine-setup.
- * (/mach-orion/gpio.c).
- */
--void orion5x_gpio_set_valid_pins(u32 pins);
-+void orion5x_gpio_set_valid(unsigned pin, int valid);
- void gpio_display(void); /* debug */
-
- struct machine_desc;
---- a/arch/arm/mach-orion5x/db88f5281-setup.c
-+++ b/arch/arm/mach-orion5x/db88f5281-setup.c
-@@ -27,6 +27,7 @@
- #include <asm/arch/orion5x.h>
- #include <asm/plat-orion/orion_nand.h>
- #include "common.h"
-+#include "mpp.h"
-
- /*****************************************************************************
- * DB-88F5281 on board devices
-@@ -305,26 +306,27 @@
- */
- orion5x_init();
-
-- /*
-- * Setup Multiplexing Pins:
-- * MPP0: GPIO (USB Over Current) MPP1: GPIO (USB Vbat input)
-- * MPP2: PCI_REQn[2] MPP3: PCI_GNTn[2]
-- * MPP4: PCI_REQn[3] MPP5: PCI_GNTn[3]
-- * MPP6: GPIO (JP0, CON17.2) MPP7: GPIO (JP1, CON17.1)
-- * MPP8: GPIO (JP2, CON11.2) MPP9: GPIO (JP3, CON11.3)
-- * MPP10: GPIO (RTC int) MPP11: GPIO (Baud Rate Generator)
-- * MPP12: GPIO (PCI int 1) MPP13: GPIO (PCI int 2)
-- * MPP14: NAND_REn[2] MPP15: NAND_WEn[2]
-- * MPP16: UART1_RX MPP17: UART1_TX
-- * MPP18: UART1_CTS MPP19: UART1_RTS
-- * MPP-DEV: DEV_D[16:31]
-- */
-- orion5x_write(MPP_0_7_CTRL, 0x00222203);
-- orion5x_write(MPP_8_15_CTRL, 0x44000000);
-- orion5x_write(MPP_16_19_CTRL, 0);
-- orion5x_write(MPP_DEV_CTRL, 0);
--
-- orion5x_gpio_set_valid_pins(0x00003fc3);
-+ orion5x_mpp_conf(0, MPP_GPIO); /* USB Over Current */
-+ orion5x_mpp_conf(1, MPP_GPIO); /* USB Vbat input */
-+ orion5x_mpp_conf(2, MPP_PCI_ARB); /* PCI_REQn[2] */
-+ orion5x_mpp_conf(3, MPP_PCI_ARB); /* PCI_GNTn[2] */
-+ orion5x_mpp_conf(4, MPP_PCI_ARB); /* PCI_REQn[3] */
-+ orion5x_mpp_conf(5, MPP_PCI_ARB); /* PCI_GNTn[3] */
-+ orion5x_mpp_conf(6, MPP_GPIO); /* JP0, CON17.2 */
-+ orion5x_mpp_conf(7, MPP_GPIO); /* JP1, CON17.1 */
-+ orion5x_mpp_conf(8, MPP_GPIO); /* JP2, CON11.2 */
-+ orion5x_mpp_conf(9, MPP_GPIO); /* JP3, CON11.3 */
-+ orion5x_mpp_conf(10, MPP_GPIO); /* RTC int */
-+ orion5x_mpp_conf(11, MPP_GPIO); /* Baud Rate Generator */
-+ orion5x_mpp_conf(12, MPP_GPIO); /* PCI int 1 */
-+ orion5x_mpp_conf(13, MPP_GPIO); /* PCI int 2 */
-+ orion5x_mpp_conf(14, MPP_NAND); /* NAND_REn[2] */
-+ orion5x_mpp_conf(15, MPP_NAND); /* NAND_WEn[2] */
-+ orion5x_mpp_conf(16, MPP_UART); /* UART1_RX */
-+ orion5x_mpp_conf(17, MPP_UART); /* UART1_TX */
-+ orion5x_mpp_conf(18, MPP_UART); /* UART1_CTSn */
-+ orion5x_mpp_conf(19, MPP_UART); /* UART1_RTSn */
-+ orion5x_write(MPP_DEV_CTRL, 0); /* DEV_D[31:16] */
-
- /*
- * Configure peripherals.
---- a/arch/arm/mach-orion5x/dns323-setup.c
-+++ b/arch/arm/mach-orion5x/dns323-setup.c
-@@ -27,6 +27,7 @@
- #include <asm/mach/pci.h>
- #include <asm/arch/orion5x.h>
- #include "common.h"
-+#include "mpp.h"
-
- #define DNS323_GPIO_LED_RIGHT_AMBER 1
- #define DNS323_GPIO_LED_LEFT_AMBER 2
-@@ -247,34 +248,27 @@
- /* Setup basic Orion functions. Need to be called early. */
- orion5x_init();
-
-- /* set MPP to 0 as D-Link's 2.6.12.6 kernel did */
-- orion5x_write(MPP_0_7_CTRL, 0);
-- orion5x_write(MPP_8_15_CTRL, 0);
-- orion5x_write(MPP_16_19_CTRL, 0);
-- orion5x_write(MPP_DEV_CTRL, 0);
--
-- /* Define used GPIO pins
--
-- GPIO Map:
--
-- | 0 | | PEX_RST_OUT (not controlled by GPIO)
-- | 1 | Out | right amber LED (= sata ch0 LED) (low-active)
-- | 2 | Out | left amber LED (= sata ch1 LED) (low-active)
-- | 3 | Out | //unknown//
-- | 4 | Out | power button LED (low-active, together with pin #5)
-- | 5 | Out | power button LED (low-active, together with pin #4)
-- | 6 | In | GMT G751-2f overtemp. shutdown signal (low-active)
-- | 7 | In | M41T80 nIRQ/OUT/SQW signal
-- | 8 | Out | triggers power off (high-active)
-- | 9 | In | power button switch (low-active)
-- | 10 | In | reset button switch (low-active)
-- | 11 | Out | //unknown//
-- | 12 | Out | //unknown//
-- | 13 | Out | //unknown//
-- | 14 | Out | //unknown//
-- | 15 | Out | //unknown//
-- */
-- orion5x_gpio_set_valid_pins(0x07f6);
-+ orion5x_mpp_conf(0, MPP_PCIE_RST_OUTn);
-+ orion5x_mpp_conf(1, MPP_GPIO); /* right amber LED (sata ch0) */
-+ orion5x_mpp_conf(2, MPP_GPIO); /* left amber LED (sata ch1) */
-+ orion5x_mpp_conf(3, MPP_UNUSED);
-+ orion5x_mpp_conf(4, MPP_GPIO); /* power button LED */
-+ orion5x_mpp_conf(5, MPP_GPIO); /* power button LED */
-+ orion5x_mpp_conf(6, MPP_GPIO); /* GMT G751-2f overtemp */
-+ orion5x_mpp_conf(7, MPP_GPIO); /* M41T80 nIRQ/OUT/SQW */
-+ orion5x_mpp_conf(8, MPP_GPIO); /* triggers power off */
-+ orion5x_mpp_conf(9, MPP_GPIO); /* power button switch */
-+ orion5x_mpp_conf(10, MPP_GPIO); /* reset button switch */
-+ orion5x_mpp_conf(11, MPP_UNUSED);
-+ orion5x_mpp_conf(12, MPP_UNUSED);
-+ orion5x_mpp_conf(13, MPP_UNUSED);
-+ orion5x_mpp_conf(14, MPP_UNUSED);
-+ orion5x_mpp_conf(15, MPP_UNUSED);
-+ orion5x_mpp_conf(16, MPP_UNUSED);
-+ orion5x_mpp_conf(17, MPP_UNUSED);
-+ orion5x_mpp_conf(18, MPP_UNUSED);
-+ orion5x_mpp_conf(19, MPP_UNUSED);
-+ orion5x_write(MPP_DEV_CTRL, 0); /* DEV_D[31:16] */
-
- /*
- * Configure peripherals.
---- a/arch/arm/mach-orion5x/gpio.c
-+++ b/arch/arm/mach-orion5x/gpio.c
-@@ -24,9 +24,12 @@
- static unsigned long gpio_valid[BITS_TO_LONGS(GPIO_MAX)];
- static const char *gpio_label[GPIO_MAX]; /* non null for allocated GPIOs */
-
--void __init orion5x_gpio_set_valid_pins(u32 pins)
-+void __init orion5x_gpio_set_valid(unsigned pin, int valid)
- {
-- gpio_valid[0] = pins;
-+ if (valid)
-+ __set_bit(pin, gpio_valid);
-+ else
-+ __clear_bit(pin, gpio_valid);
- }
-
- /*
---- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
-+++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
-@@ -25,6 +25,7 @@
- #include <asm/arch/orion5x.h>
- #include <asm/plat-orion/orion_nand.h>
- #include "common.h"
-+#include "mpp.h"
-
- /*****************************************************************************
- * KUROBOX-PRO Info
-@@ -187,26 +188,26 @@
- */
- orion5x_init();
-
-- /*
-- * Setup Multiplexing Pins --
-- * MPP[0-1] Not used
-- * MPP[2] GPIO Micon
-- * MPP[3] GPIO RTC
-- * MPP[4-5] Not used
-- * MPP[6] Nand Flash REn
-- * MPP[7] Nand Flash WEn
-- * MPP[8-11] Not used
-- * MPP[12] SATA 0 presence Indication
-- * MPP[13] SATA 1 presence Indication
-- * MPP[14] SATA 0 active Indication
-- * MPP[15] SATA 1 active indication
-- * MPP[16-19] Not used
-- */
-- orion5x_write(MPP_0_7_CTRL, 0x44220003);
-- orion5x_write(MPP_8_15_CTRL, 0x55550000);
-- orion5x_write(MPP_16_19_CTRL, 0x0);
--
-- orion5x_gpio_set_valid_pins(0x0000000c);
-+ orion5x_mpp_conf(0, MPP_UNUSED);
-+ orion5x_mpp_conf(1, MPP_UNUSED);
-+ orion5x_mpp_conf(2, MPP_GPIO); /* GPIO Micon */
-+ orion5x_mpp_conf(3, MPP_GPIO); /* GPIO Rtc */
-+ orion5x_mpp_conf(4, MPP_UNUSED);
-+ orion5x_mpp_conf(5, MPP_UNUSED);
-+ orion5x_mpp_conf(6, MPP_NAND); /* NAND Flash REn */
-+ orion5x_mpp_conf(7, MPP_NAND); /* NAND Flash WEn */
-+ orion5x_mpp_conf(8, MPP_UNUSED);
-+ orion5x_mpp_conf(9, MPP_UNUSED);
-+ orion5x_mpp_conf(10, MPP_UNUSED);
-+ orion5x_mpp_conf(11, MPP_UNUSED);
-+ orion5x_mpp_conf(12, MPP_SATA_LED); /* SATA 0 presence */
-+ orion5x_mpp_conf(13, MPP_SATA_LED); /* SATA 1 presence */
-+ orion5x_mpp_conf(14, MPP_SATA_LED); /* SATA 0 active */
-+ orion5x_mpp_conf(15, MPP_SATA_LED); /* SATA 1 active */
-+ orion5x_mpp_conf(16, MPP_UNUSED);
-+ orion5x_mpp_conf(17, MPP_UNUSED);
-+ orion5x_mpp_conf(18, MPP_UNUSED);
-+ orion5x_mpp_conf(19, MPP_UNUSED);
-
- /*
- * Configure peripherals.
---- /dev/null
-+++ b/arch/arm/mach-orion5x/mpp.c
-@@ -0,0 +1,142 @@
-+/*
-+ * arch/arm/mach-orion5x/mpp.c
-+ *
-+ * MPP functions for Marvell Orion 5x SoCs
-+ *
-+ * This file is licensed under the terms of the GNU General Public
-+ * License version 2. This program is licensed "as is" without any
-+ * warranty of any kind, whether express or implied.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/mbus.h>
-+#include <asm/hardware.h>
-+#include <asm/io.h>
-+#include "common.h"
-+#include "mpp.h"
-+
-+static int is_5182(void)
-+{
-+ u32 dev;
-+ u32 rev;
-+
-+ orion5x_pcie_id(&dev, &rev);
-+
-+ return !!(dev == MV88F5182_DEV_ID);
-+}
-+
-+static int is_5281(void)
-+{
-+ u32 dev;
-+ u32 rev;
-+
-+ orion5x_pcie_id(&dev, &rev);
-+
-+ return !!(dev == MV88F5281_DEV_ID);
-+}
-+
-+static int __init determine_type_encoding(int mpp, enum orion5x_mpp_type type)
-+{
-+ switch (type) {
-+ case MPP_UNUSED:
-+ case MPP_GPIO:
-+ if (mpp == 0)
-+ return 3;
-+ if (mpp >= 1 && mpp <= 15)
-+ return 0;
-+ if (mpp >= 16 && mpp <= 19) {
-+ if (is_5182())
-+ return 5;
-+ if (type == MPP_UNUSED)
-+ return 0;
-+ }
-+ return -1;
-+
-+ case MPP_PCIE_RST_OUTn:
-+ if (mpp == 0)
-+ return 0;
-+ return -1;
-+
-+ case MPP_PCI_ARB:
-+ if (mpp >= 0 && mpp <= 7)
-+ return 2;
-+ return -1;
-+
-+ case MPP_PCI_PMEn:
-+ if (mpp == 2)
-+ return 3;
-+ return -1;
-+
-+ case MPP_GIGE:
-+ if (mpp >= 8 && mpp <= 15)
-+ return 1;
-+ return -1;
-+
-+ case MPP_NAND:
-+ if (is_5182() || is_5281()) {
-+ if (mpp >= 4 && mpp <= 7)
-+ return 4;
-+ if (mpp >= 12 && mpp <= 17)
-+ return 4;
-+ }
-+ return -1;
-+
-+
-+ case MPP_SATA_LED:
-+ if (is_5182()) {
-+ if (mpp >= 4 && mpp <= 7)
-+ return 5;
-+ if (mpp >= 12 && mpp <= 15)
-+ return 5;
-+ }
-+ return -1;
-+
-+ case MPP_UART:
-+ if (mpp >= 16 && mpp <= 19)
-+ return 0;
-+ return -1;
-+ }
-+
-+ printk(KERN_INFO "unknown MPP type %d\n", type);
-+
-+ return -1;
-+}
-+
-+static void __init set_mpp_type(int mpp, int num_type)
-+{
-+ unsigned long reg;
-+ u32 value;
-+
-+ if (mpp >= 0 && mpp <= 7)
-+ reg = MPP_0_7_CTRL;
-+ else if (mpp >= 8 && mpp <= 15)
-+ reg = MPP_8_15_CTRL;
-+ else if (mpp >= 16 && mpp <= 19)
-+ reg = MPP_16_19_CTRL;
-+ else
-+ return;
-+
-+ mpp &= 7;
-+
-+ value = readl(reg);
-+ value &= ~(0xf << (mpp << 2));
-+ value |= (num_type & 0xf) << (mpp << 2);
-+ writel(value, reg);
-+}
-+
-+void __init orion5x_mpp_conf(int mpp, enum orion5x_mpp_type type)
-+{
-+ int num_type;
-+
-+ num_type = determine_type_encoding(mpp, type);
-+ if (num_type < 0) {
-+ printk(KERN_ERR "orion5x_mpp_conf: invalid MPP "
-+ "combination (%d, %d)\n", mpp, type);
-+ return;
-+ }
-+
-+ set_mpp_type(mpp, num_type);
-+
-+ orion5x_gpio_set_valid(mpp, (type == MPP_GPIO) ? 1 : 0);
-+}
---- /dev/null
-+++ b/arch/arm/mach-orion5x/mpp.h
-@@ -0,0 +1,63 @@
-+#ifndef __ARCH_ORION5X_MPP_H
-+#define __ARCH_ORION5X_MPP_H
-+
-+enum orion5x_mpp_type {
-+ /*
-+ * This MPP is unused.
-+ */
-+ MPP_UNUSED,
-+
-+ /*
-+ * This MPP pin is used as a generic GPIO pin. Valid for
-+ * MPPs 0-15 and device bus data pins 16-31. On 5182, also
-+ * valid for MPPs 16-19.
-+ */
-+ MPP_GPIO,
-+
-+ /*
-+ * This MPP is used as PCIe_RST_OUTn pin. Valid for
-+ * MPP 0 only.
-+ */
-+ MPP_PCIE_RST_OUTn,
-+
-+ /*
-+ * This MPP is used as PCI arbiter pin (REQn/GNTn.)
-+ * Valid for MPPs 0-7 only.
-+ */
-+ MPP_PCI_ARB,
-+
-+ /*
-+ * This MPP is used as PCI_PMEn pin. Valid for MPP 2 only.
-+ */
-+ MPP_PCI_PMEn,
-+
-+ /*
-+ * This MPP is used as GigE half-duplex (COL, CRS) or GMII
-+ * (RXERR, CRS, TXERR, TXD[7:4], RXD[7:4]) pin. Valid for
-+ * MPPs 8-19 only.
-+ */
-+ MPP_GIGE,
-+
-+ /*
-+ * This MPP is used as NAND REn/WEn pin. Valid for MPPs
-+ * 4-7 and 12-17 only, and only on the 5181l/5182/5281.
-+ */
-+ MPP_NAND,
-+
-+ /*
-+ * This MPP is used as a SATA presence/activity LED.
-+ * Valid for MPPs 4-7 and 12-15 only, and only on the 5182.
-+ */
-+ MPP_SATA_LED,
-+
-+ /*
-+ * This MPP is used as UART1 RXD/TXD/CTSn/RTSn pin.
-+ * Valid for MPPs 16-19 only.
-+ */
-+ MPP_UART,
-+};
-+
-+void orion5x_mpp_conf(int mpp, enum orion5x_mpp_type type);
-+
-+
-+#endif
---- a/arch/arm/mach-orion5x/rd88f5182-setup.c
-+++ b/arch/arm/mach-orion5x/rd88f5182-setup.c
-@@ -26,6 +26,7 @@
- #include <asm/mach/pci.h>
- #include <asm/arch/orion5x.h>
- #include "common.h"
-+#include "mpp.h"
-
- /*****************************************************************************
- * RD-88F5182 Info
-@@ -248,22 +249,28 @@
- */
- orion5x_init();
-
-+ orion5x_mpp_conf(0, MPP_GPIO); /* Debug Led */
-+ orion5x_mpp_conf(1, MPP_GPIO); /* Reset Switch */
-+ orion5x_mpp_conf(2, MPP_UNUSED);
-+ orion5x_mpp_conf(3, MPP_GPIO); /* RTC Int */
-+ orion5x_mpp_conf(4, MPP_GPIO);
-+ orion5x_mpp_conf(5, MPP_GPIO);
-+ orion5x_mpp_conf(6, MPP_GPIO); /* PCI_intA */
-+ orion5x_mpp_conf(7, MPP_GPIO); /* PCI_intB */
-+ orion5x_mpp_conf(8, MPP_UNUSED);
-+ orion5x_mpp_conf(9, MPP_UNUSED);
-+ orion5x_mpp_conf(10, MPP_UNUSED);
-+ orion5x_mpp_conf(11, MPP_UNUSED);
-+ orion5x_mpp_conf(12, MPP_SATA_LED); /* SATA 0 presence */
-+ orion5x_mpp_conf(13, MPP_SATA_LED); /* SATA 1 presence */
-+ orion5x_mpp_conf(14, MPP_SATA_LED); /* SATA 0 active */
-+ orion5x_mpp_conf(15, MPP_SATA_LED); /* SATA 1 active */
-+ orion5x_mpp_conf(16, MPP_UNUSED);
-+ orion5x_mpp_conf(17, MPP_UNUSED);
-+ orion5x_mpp_conf(18, MPP_UNUSED);
-+ orion5x_mpp_conf(19, MPP_UNUSED);
-+
- /*
-- * Setup Multiplexing Pins --
-- * MPP[0] Debug Led (GPIO - Out)
-- * MPP[1] Debug Led (GPIO - Out)
-- * MPP[2] N/A
-- * MPP[3] RTC_Int (GPIO - In)
-- * MPP[4] GPIO
-- * MPP[5] GPIO
-- * MPP[6] PCI_intA (GPIO - In)
-- * MPP[7] PCI_intB (GPIO - In)
-- * MPP[8-11] N/A
-- * MPP[12] SATA 0 presence Indication
-- * MPP[13] SATA 1 presence Indication
-- * MPP[14] SATA 0 active Indication
-- * MPP[15] SATA 1 active indication
-- * MPP[16-19] Not used
- * MPP[20] PCI Clock to MV88F5182
- * MPP[21] PCI Clock to mini PCI CON11
- * MPP[22] USB 0 over current indication
-@@ -272,12 +279,6 @@
- * MPP[25] USB 0 over current enable
- */
-
-- orion5x_write(MPP_0_7_CTRL, 0x00000003);
-- orion5x_write(MPP_8_15_CTRL, 0x55550000);
-- orion5x_write(MPP_16_19_CTRL, 0x5555);
--
-- orion5x_gpio_set_valid_pins(0x000000fb);
--
- /*
- * Configure peripherals.
- */
---- a/arch/arm/mach-orion5x/ts209-setup.c
-+++ b/arch/arm/mach-orion5x/ts209-setup.c
-@@ -28,6 +28,7 @@
- #include <asm/mach/pci.h>
- #include <asm/arch/orion5x.h>
- #include "common.h"
-+#include "mpp.h"
-
- #define QNAP_TS209_NOR_BOOT_BASE 0xf4000000
- #define QNAP_TS209_NOR_BOOT_SIZE SZ_8M
-@@ -364,33 +365,33 @@
- */
- orion5x_init();
-
-+ orion5x_mpp_conf(0, MPP_UNUSED);
-+ orion5x_mpp_conf(1, MPP_GPIO); /* USB copy button */
-+ orion5x_mpp_conf(2, MPP_GPIO); /* Load defaults button */
-+ orion5x_mpp_conf(3, MPP_GPIO); /* GPIO RTC */
-+ orion5x_mpp_conf(4, MPP_UNUSED);
-+ orion5x_mpp_conf(5, MPP_UNUSED);
-+ orion5x_mpp_conf(6, MPP_GPIO); /* PCI Int A */
-+ orion5x_mpp_conf(7, MPP_GPIO); /* PCI Int B */
-+ orion5x_mpp_conf(8, MPP_UNUSED);
-+ orion5x_mpp_conf(9, MPP_UNUSED);
-+ orion5x_mpp_conf(10, MPP_UNUSED);
-+ orion5x_mpp_conf(11, MPP_UNUSED);
-+ orion5x_mpp_conf(12, MPP_SATA_LED); /* SATA 0 presence */
-+ orion5x_mpp_conf(13, MPP_SATA_LED); /* SATA 1 presence */
-+ orion5x_mpp_conf(14, MPP_SATA_LED); /* SATA 0 active */
-+ orion5x_mpp_conf(15, MPP_SATA_LED); /* SATA 1 active */
-+ orion5x_mpp_conf(16, MPP_UART); /* UART1 RXD */
-+ orion5x_mpp_conf(17, MPP_UART); /* UART1 TXD */
-+ orion5x_mpp_conf(18, MPP_GPIO); /* SW_RST */
-+ orion5x_mpp_conf(19, MPP_UNUSED);
-+
- /*
-- * Setup Multiplexing Pins --
-- * MPP[0] Reserved
-- * MPP[1] USB copy button (0 active)
-- * MPP[2] Load defaults button (0 active)
-- * MPP[3] GPIO RTC
-- * MPP[4-5] Reserved
-- * MPP[6] PCI Int A
-- * MPP[7] PCI Int B
-- * MPP[8-11] Reserved
-- * MPP[12] SATA 0 presence
-- * MPP[13] SATA 1 presence
-- * MPP[14] SATA 0 active
-- * MPP[15] SATA 1 active
-- * MPP[16] UART1 RXD
-- * MPP[17] UART1 TXD
-- * MPP[18] SW_RST (0 active)
-- * MPP[19] Reserved
- * MPP[20] PCI clock 0
- * MPP[21] PCI clock 1
- * MPP[22] USB 0 over current
- * MPP[23-25] Reserved
- */
-- orion5x_write(MPP_0_7_CTRL, 0x3);
-- orion5x_write(MPP_8_15_CTRL, 0x55550000);
-- orion5x_write(MPP_16_19_CTRL, 0x5500);
-- orion5x_gpio_set_valid_pins(0x3cc0fff);
-
- /*
- * Configure peripherals.