Add patches from git.marvell.com to improve Kirkwood support
svn path=/dists/trunk/linux-2.6/; revision=13107
This commit is contained in:
parent
1e102bea26
commit
d09de6863e
|
@ -57,6 +57,15 @@ linux-2.6 (2.6.29~rc8-1~experimental.1) UNRELEASED; urgency=low
|
|||
* [arm, armel] Enable various V4L USB devices. (Closes: #518582)
|
||||
* [arm/orion5x] Build the SENSORS_LM75 module since it's needed on the
|
||||
D-Link DNS-323.
|
||||
* Add patches from git.marvell.com to improve Kirkwood support:
|
||||
- Orion: make gpio /input/output validation separate
|
||||
- Kirkwood: MPP initialization code
|
||||
- SDIO driver for Marvell SoCs
|
||||
- Kirkwood: SDIO driver registration for DB6281 and RD6281
|
||||
- Kirkwood: register internal devices in a common place
|
||||
- Kirkwood: Marvell SheevaPlug support
|
||||
- Kirkwood: SheevaPlug USB Power Enable setup
|
||||
- Kirkwood: SheevaPlug LED support
|
||||
|
||||
[ Ben Hutchings ]
|
||||
* Remove firmware from drivers and make them use request_firmware():
|
||||
|
|
|
@ -0,0 +1,436 @@
|
|||
From: Nicolas Pitre <nico@cam.org>
|
||||
Date: Sat, 31 Jan 2009 03:44:20 +0000 (-0500)
|
||||
Subject: [ARM] Kirkwood: MPP initialization code
|
||||
X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=0100defd2803f6c3df6bfd400a10af0cf9b8536a
|
||||
|
||||
[ARM] Kirkwood: MPP initialization code
|
||||
|
||||
This allows for board support code to set up their MPP config if the
|
||||
bootloader didn't do it all or did it wrong. This also allows to
|
||||
register usable GPIOs.
|
||||
|
||||
Signed-off-by: Nicolas Pitre <nico@marvell.com>
|
||||
---
|
||||
|
||||
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
|
||||
index b96c55d..fdff35c 100644
|
||||
--- a/arch/arm/mach-kirkwood/Makefile
|
||||
+++ b/arch/arm/mach-kirkwood/Makefile
|
||||
@@ -1,4 +1,4 @@
|
||||
-obj-y += common.o addr-map.o irq.o pcie.o
|
||||
+obj-y += common.o addr-map.o irq.o pcie.o mpp.o
|
||||
|
||||
obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o
|
||||
obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o
|
||||
diff --git a/arch/arm/mach-kirkwood/mpp.c b/arch/arm/mach-kirkwood/mpp.c
|
||||
new file mode 100644
|
||||
index 0000000..63c4493
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/mach-kirkwood/mpp.c
|
||||
@@ -0,0 +1,97 @@
|
||||
+/*
|
||||
+ * arch/arm/mach-kirkwood/mpp.c
|
||||
+ *
|
||||
+ * MPP functions for Marvell Kirkwood 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 <linux/io.h>
|
||||
+#include <asm/gpio.h>
|
||||
+#include <mach/hardware.h>
|
||||
+#include "common.h"
|
||||
+#include "mpp.h"
|
||||
+
|
||||
+static unsigned int __init kirkwood_variant(void)
|
||||
+{
|
||||
+ u32 dev, rev;
|
||||
+
|
||||
+ kirkwood_pcie_id(&dev, &rev);
|
||||
+
|
||||
+ if (dev == MV88F6281_DEV_ID && rev >= MV88F6281_REV_A0)
|
||||
+ return MPP_F6281_MASK;
|
||||
+ if (dev == MV88F6192_DEV_ID && rev >= MV88F6192_REV_A0)
|
||||
+ return MPP_F6192_MASK;
|
||||
+ if (dev == MV88F6180_DEV_ID)
|
||||
+ return MPP_F6180_MASK;
|
||||
+
|
||||
+ printk(KERN_ERR "MPP setup: unknown kirkwood variant "
|
||||
+ "(dev %#x rev %#x)\n", dev, rev);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#define MPP_CTRL(i) (DEV_BUS_VIRT_BASE + (i) * 4)
|
||||
+#define MPP_NR_REGS (1 + MPP_MAX/8)
|
||||
+
|
||||
+void __init kirkwood_mpp_conf(unsigned int *mpp_list)
|
||||
+{
|
||||
+ u32 mpp_ctrl[MPP_NR_REGS];
|
||||
+ unsigned int variant_mask;
|
||||
+ int i;
|
||||
+
|
||||
+ variant_mask = kirkwood_variant();
|
||||
+ if (!variant_mask)
|
||||
+ return;
|
||||
+
|
||||
+ printk(KERN_DEBUG "initial MPP regs:");
|
||||
+ for (i = 0; i < MPP_NR_REGS; i++) {
|
||||
+ mpp_ctrl[i] = readl(MPP_CTRL(i));
|
||||
+ printk(" %08x", mpp_ctrl[i]);
|
||||
+ }
|
||||
+ printk("\n");
|
||||
+
|
||||
+ while (*mpp_list) {
|
||||
+ unsigned int num = MPP_NUM(*mpp_list);
|
||||
+ unsigned int sel = MPP_SEL(*mpp_list);
|
||||
+ int shift, gpio_mode;
|
||||
+
|
||||
+ if (num > MPP_MAX) {
|
||||
+ printk(KERN_ERR "kirkwood_mpp_conf: invalid MPP "
|
||||
+ "number (%u)\n", num);
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (!(*mpp_list & variant_mask)) {
|
||||
+ printk(KERN_WARNING
|
||||
+ "kirkwood_mpp_conf: requested MPP%u config "
|
||||
+ "unavailable on this hardware\n", num);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ shift = (num & 7) << 2;
|
||||
+ mpp_ctrl[num / 8] &= ~(0xf << shift);
|
||||
+ mpp_ctrl[num / 8] |= sel << shift;
|
||||
+
|
||||
+ gpio_mode = 0;
|
||||
+ if (*mpp_list & MPP_INPUT_MASK)
|
||||
+ gpio_mode |= GPIO_INPUT_OK;
|
||||
+ if (*mpp_list & MPP_OUTPUT_MASK)
|
||||
+ gpio_mode |= GPIO_OUTPUT_OK;
|
||||
+ if (sel != 0)
|
||||
+ gpio_mode = 0;
|
||||
+ orion_gpio_set_valid(num, gpio_mode);
|
||||
+
|
||||
+ mpp_list++;
|
||||
+ }
|
||||
+
|
||||
+ printk(KERN_DEBUG " final MPP regs:");
|
||||
+ for (i = 0; i < MPP_NR_REGS; i++) {
|
||||
+ writel(mpp_ctrl[i], MPP_CTRL(i));
|
||||
+ printk(" %08x", mpp_ctrl[i]);
|
||||
+ }
|
||||
+ printk("\n");
|
||||
+}
|
||||
diff --git a/arch/arm/mach-kirkwood/mpp.h b/arch/arm/mach-kirkwood/mpp.h
|
||||
new file mode 100644
|
||||
index 0000000..45cccb7
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/mach-kirkwood/mpp.h
|
||||
@@ -0,0 +1,303 @@
|
||||
+/*
|
||||
+ * linux/arch/arm/mach-kirkwood/mpp.h -- Multi Purpose Pins
|
||||
+ *
|
||||
+ * Copyright 2009: Marvell Technology Group Ltd.
|
||||
+ *
|
||||
+ * 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.
|
||||
+ */
|
||||
+
|
||||
+#ifndef __KIRKWOOD_MPP_H
|
||||
+#define __KIRKWOOD_MPP_H
|
||||
+
|
||||
+#define MPP(_num, _sel, _in, _out, _F6180, _F6190, _F6192, _F6281) ( \
|
||||
+ /* MPP number */ ((_num) & 0xff) | \
|
||||
+ /* MPP select value */ (((_sel) & 0xf) << 8) | \
|
||||
+ /* may be input signal */ ((!!(_in)) << 12) | \
|
||||
+ /* may be output signal */ ((!!(_out)) << 13) | \
|
||||
+ /* available on F6180 */ ((!!(_F6180)) << 14) | \
|
||||
+ /* available on F6190 */ ((!!(_F6190)) << 15) | \
|
||||
+ /* available on F6192 */ ((!!(_F6192)) << 16) | \
|
||||
+ /* available on F6281 */ ((!!(_F6281)) << 17))
|
||||
+
|
||||
+#define MPP_NUM(x) ((x) & 0xff)
|
||||
+#define MPP_SEL(x) (((x) >> 8) & 0xf)
|
||||
+
|
||||
+ /* num sel i o 6180 6190 6192 6281 */
|
||||
+
|
||||
+#define MPP_INPUT_MASK MPP( 0, 0x0, 1, 0, 0, 0, 0, 0 )
|
||||
+#define MPP_OUTPUT_MASK MPP( 0, 0x0, 0, 1, 0, 0, 0, 0 )
|
||||
+
|
||||
+#define MPP_F6180_MASK MPP( 0, 0x0, 0, 0, 1, 0, 0, 0 )
|
||||
+#define MPP_F6190_MASK MPP( 0, 0x0, 0, 0, 0, 1, 0, 0 )
|
||||
+#define MPP_F6192_MASK MPP( 0, 0x0, 0, 0, 0, 0, 1, 0 )
|
||||
+#define MPP_F6281_MASK MPP( 0, 0x0, 0, 0, 0, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP0_GPIO MPP( 0, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP0_NF_IO2 MPP( 0, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP0_SPI_SCn MPP( 0, 0x2, 0, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP1_GPO MPP( 1, 0x0, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP1_NF_IO3 MPP( 1, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP1_SPI_MOSI MPP( 1, 0x2, 0, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP2_GPO MPP( 2, 0x0, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP2_NF_IO4 MPP( 2, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP2_SPI_SCK MPP( 2, 0x2, 0, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP3_GPO MPP( 3, 0x0, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP3_NF_IO5 MPP( 3, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP3_SPI_MISO MPP( 3, 0x2, 1, 0, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP4_GPIO MPP( 4, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP4_NF_IO6 MPP( 4, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP4_UART0_RXD MPP( 4, 0x2, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP4_SATA1_ACTn MPP( 4, 0x5, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP4_PTP_CLK MPP( 4, 0xd, 1, 0, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP5_GPO MPP( 5, 0x0, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP5_NF_IO7 MPP( 5, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP5_UART0_TXD MPP( 5, 0x2, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP5_PTP_TRIG_GEN MPP( 5, 0x4, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP5_SATA0_ACTn MPP( 5, 0x5, 0, 1, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP6_SYSRST_OUTn MPP( 6, 0x1, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP6_SPI_MOSI MPP( 6, 0x2, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP6_PTP_TRIG_GEN MPP( 6, 0x3, 0, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP7_GPO MPP( 7, 0x0, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP7_PEX_RST_OUTn MPP( 7, 0x1, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP7_SPI_SCn MPP( 7, 0x2, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP7_PTP_TRIG_GEN MPP( 7, 0x3, 0, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP8_GPIO MPP( 8, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP8_TW_SDA MPP( 8, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP8_UART0_RTS MPP( 8, 0x2, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP8_UART1_RTS MPP( 8, 0x3, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP8_MII0_RXERR MPP( 8, 0x4, 1, 0, 0, 1, 1, 1 )
|
||||
+#define MPP8_SATA1_PRESENTn MPP( 8, 0x5, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP8_PTP_CLK MPP( 8, 0xc, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP8_MII0_COL MPP( 8, 0xd, 1, 0, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP9_GPIO MPP( 9, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP9_TW_SCK MPP( 9, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP9_UART0_CTS MPP( 9, 0x2, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP9_UART1_CTS MPP( 9, 0x3, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP9_SATA0_PRESENTn MPP( 9, 0x5, 0, 1, 0, 1, 1, 1 )
|
||||
+#define MPP9_PTP_EVENT_REQ MPP( 9, 0xc, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP9_MII0_CRS MPP( 9, 0xd, 1, 0, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP10_GPO MPP( 10, 0x0, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP10_SPI_SCK MPP( 10, 0x2, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP10_UArt0_TXD MPP( 10, 0X3, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP10_SATA1_ACTn MPP( 10, 0x5, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP10_PTP_TRIG_GEN MPP( 10, 0xc, 0, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP11_GPIO MPP( 11, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP11_SPI_MISO MPP( 11, 0x2, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP11_UArt0_RXD MPP( 11, 0x3, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP11_PTP_EVENT_REQ MPP( 11, 0x4, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP11_PTP_TRIG_GEN MPP( 11, 0xc, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP11_PTP_CLK MPP( 11, 0xd, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 1, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP12_GPO MPP( 12, 0x0, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP12_SD_CLK MPP( 12, 0x1, 0, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP13_GPIO MPP( 13, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP13_SD_CMD MPP( 13, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP13_UART1_TXD MPP( 13, 0x3, 0, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP14_GPIO MPP( 14, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP14_SD_D0 MPP( 14, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP14_UART1_RXD MPP( 14, 0x3, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP14_SATA1_PRESENTn MPP( 14, 0x4, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP14_MII0_COL MPP( 14, 0xd, 1, 0, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP15_GPIO MPP( 15, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP15_SD_D1 MPP( 15, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP15_UART0_RTS MPP( 15, 0x2, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP15_UART1_TXD MPP( 15, 0x3, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP15_SATA0_ACTn MPP( 15, 0x4, 0, 1, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP16_GPIO MPP( 16, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP16_SD_D2 MPP( 16, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP16_UART0_CTS MPP( 16, 0x2, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP16_UART1_RXD MPP( 16, 0x3, 1, 0, 1, 1, 1, 1 )
|
||||
+#define MPP16_SATA1_ACTn MPP( 16, 0x4, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP16_MII0_CRS MPP( 16, 0xd, 1, 0, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP17_GPIO MPP( 17, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP17_SD_D3 MPP( 17, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP17_SATA0_PRESENTn MPP( 17, 0x4, 0, 1, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP18_GPO MPP( 18, 0x0, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP18_NF_IO0 MPP( 18, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP19_GPO MPP( 19, 0x0, 0, 1, 1, 1, 1, 1 )
|
||||
+#define MPP19_NF_IO1 MPP( 19, 0x1, 1, 1, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP20_GPIO MPP( 20, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP20_TSMP0 MPP( 20, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP20_TDM_CH0_TX_QL MPP( 20, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP20_GE1_0 MPP( 20, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP20_AUDIO_SPDIFI MPP( 20, 0x4, 1, 0, 0, 0, 1, 1 )
|
||||
+#define MPP20_SATA1_ACTn MPP( 20, 0x5, 0, 1, 0, 0, 1, 1 )
|
||||
+
|
||||
+#define MPP21_GPIO MPP( 21, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP21_TSMP1 MPP( 21, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP21_TDM_CH0_RX_QL MPP( 21, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP21_GE1_1 MPP( 21, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP21_AUDIO_SPDIFO MPP( 21, 0x4, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP21_SATA0_ACTn MPP( 21, 0x5, 0, 1, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP22_GPIO MPP( 22, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP22_TSMP2 MPP( 22, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP22_TDM_CH2_TX_QL MPP( 22, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP22_GE1_2 MPP( 22, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP22_AUDIO_SPDIFRMKCLK MPP( 22, 0x4, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP22_SATA1_PRESENTn MPP( 22, 0x5, 0, 1, 0, 0, 1, 1 )
|
||||
+
|
||||
+#define MPP23_GPIO MPP( 23, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP23_TSMP3 MPP( 23, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP23_TDM_CH2_RX_QL MPP( 23, 0x2, 1, 0, 0, 0, 1, 1 )
|
||||
+#define MPP23_GE1_3 MPP( 23, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP23_AUDIO_I2SBCLK MPP( 23, 0x4, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP23_SATA0_PRESENTn MPP( 23, 0x5, 0, 1, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP24_GPIO MPP( 24, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP24_TSMP4 MPP( 24, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP24_TDM_SPI_CS0 DEV( 24, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP24_GE1_4 MPP( 24, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP24_AUDIO_I2SDO MPP( 24, 0x4, 0, 1, 0, 0, 1, 1 )
|
||||
+
|
||||
+#define MPP25_GPIO MPP( 25, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP25_TSMP5 MPP( 25, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP25_TDM_SPI_SCK MPP( 25, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP25_GE1_5 MPP( 25, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP25_AUDIO_I2SLRCLK MPP( 25, 0x4, 0, 1, 0, 0, 1, 1 )
|
||||
+
|
||||
+#define MPP26_GPIO MPP( 26, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP26_TSMP6 MPP( 26, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP26_TDM_SPI_MISO MPP( 26, 0x2, 1, 0, 0, 0, 1, 1 )
|
||||
+#define MPP26_GE1_6 MPP( 26, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP26_AUDIO_I2SMCLK MPP( 26, 0x4, 0, 1, 0, 0, 1, 1 )
|
||||
+
|
||||
+#define MPP27_GPIO MPP( 27, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP27_TSMP7 MPP( 27, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP27_TDM_SPI_MOSI MPP( 27, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP27_GE1_7 MPP( 27, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP27_AUDIO_I2SDI MPP( 27, 0x4, 1, 0, 0, 0, 1, 1 )
|
||||
+
|
||||
+#define MPP28_GPIO MPP( 28, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP28_TSMP8 MPP( 28, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP28_TDM_CODEC_INTn MPP( 28, 0x2, 0, 0, 0, 0, 1, 1 )
|
||||
+#define MPP28_GE1_8 MPP( 28, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP28_AUDIO_EXTCLK MPP( 28, 0x4, 1, 0, 0, 0, 1, 1 )
|
||||
+
|
||||
+#define MPP29_GPIO MPP( 29, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP29_TSMP9 MPP( 29, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP29_TDM_CODEC_RSTn MPP( 29, 0x2, 0, 0, 0, 0, 1, 1 )
|
||||
+#define MPP29_GE1_9 MPP( 29, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP30_GPIO MPP( 30, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP30_TSMP10 MPP( 30, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP30_TDM_PCLK MPP( 30, 0x2, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP30_GE1_10 MPP( 30, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP31_GPIO MPP( 31, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP31_TSMP11 MPP( 31, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP31_TDM_FS MPP( 31, 0x2, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP31_GE1_11 MPP( 31, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP32_GPIO MPP( 32, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP32_TSMP12 MPP( 32, 0x1, 1, 1, 0, 0, 1, 1 )
|
||||
+#define MPP32_TDM_DRX MPP( 32, 0x2, 1, 0, 0, 0, 1, 1 )
|
||||
+#define MPP32_GE1_12 MPP( 32, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP33_GPIO MPP( 33, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP33_GE1_13 MPP( 33, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP34_GPIO MPP( 34, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
+#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP34_GE1_14 MPP( 34, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP35_GPIO MPP( 35, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
+#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
+#define MPP35_GE1_15 MPP( 35, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP35_SATA0_ACTn MPP( 35, 0x5, 0, 1, 0, 1, 1, 1 )
|
||||
+#define MPP35_MII0_RXERR MPP( 35, 0xc, 1, 0, 1, 1, 1, 1 )
|
||||
+
|
||||
+#define MPP36_GPIO MPP( 36, 0x0, 1, 1, 1, 0, 0, 1 )
|
||||
+#define MPP36_TSMP0 MPP( 36, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP36_TDM_SPI_CS1 MPP( 36, 0x2, 0, 1, 0, 0, 0, 1 )
|
||||
+#define MPP36_AUDIO_SPDIFI MPP( 36, 0x4, 1, 0, 1, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP37_GPIO MPP( 37, 0x0, 1, 1, 1, 0, 0, 1 )
|
||||
+#define MPP37_TSMP1 MPP( 37, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP37_TDM_CH2_TX_QL MPP( 37, 0x2, 0, 1, 0, 0, 0, 1 )
|
||||
+#define MPP37_AUDIO_SPDIFO MPP( 37, 0x4, 0, 1, 1, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP38_GPIO MPP( 38, 0x0, 1, 1, 1, 0, 0, 1 )
|
||||
+#define MPP38_TSMP2 MPP( 38, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP38_TDM_CH2_RX_QL MPP( 38, 0x2, 0, 1, 0, 0, 0, 1 )
|
||||
+#define MPP38_AUDIO_SPDIFRMLCLK MPP( 38, 0x4, 0, 1, 1, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP39_GPIO MPP( 39, 0x0, 1, 1, 1, 0, 0, 1 )
|
||||
+#define MPP39_TSMP3 MPP( 39, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP39_TDM_SPI_CS0 MPP( 39, 0x2, 0, 1, 0, 0, 0, 1 )
|
||||
+#define MPP39_AUDIO_I2SBCLK MPP( 39, 0x4, 0, 1, 1, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP40_GPIO MPP( 40, 0x0, 1, 1, 1, 0, 0, 1 )
|
||||
+#define MPP40_TSMP4 MPP( 40, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP40_TDM_SPI_SCK MPP( 40, 0x2, 0, 1, 0, 0, 0, 1 )
|
||||
+#define MPP40_AUDIO_I2SDO MPP( 40, 0x4, 0, 1, 1, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP41_GPIO MPP( 41, 0x0, 1, 1, 1, 0, 0, 1 )
|
||||
+#define MPP41_TSMP5 MPP( 41, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP41_TDM_SPI_MISO MPP( 41, 0x2, 1, 0, 0, 0, 0, 1 )
|
||||
+#define MPP41_AUDIO_I2SLRC MPP( 41, 0x4, 0, 1, 1, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP42_GPIO MPP( 42, 0x0, 1, 1, 1, 0, 0, 1 )
|
||||
+#define MPP42_TSMP6 MPP( 42, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP42_TDM_SPI_MOSI MPP( 42, 0x2, 0, 1, 0, 0, 0, 1 )
|
||||
+#define MPP42_AUDIO_I2SMCLK MPP( 42, 0x4, 0, 1, 1, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP43_GPIO MPP( 43, 0x0, 1, 1, 1, 0, 0, 1 )
|
||||
+#define MPP43_TSMP7 MPP( 43, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP43_TDM_CODEC_INTn MPP( 43, 0x2, 0, 0, 0, 0, 0, 1 )
|
||||
+#define MPP43_AUDIO_I2SDI MPP( 43, 0x4, 1, 0, 1, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP44_GPIO MPP( 44, 0x0, 1, 1, 1, 0, 0, 1 )
|
||||
+#define MPP44_TSMP8 MPP( 44, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP44_TDM_CODEC_RSTn MPP( 44, 0x2, 0, 0, 0, 0, 0, 1 )
|
||||
+#define MPP44_AUDIO_EXTCLK MPP( 44, 0x4, 1, 0, 1, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP45_GPIO MPP( 45, 0x0, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP45_TSMP9 MPP( 45, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP45_TDM_PCLK MPP( 45, 0x2, 1, 1, 0, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP46_GPIO MPP( 46, 0x0, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP46_TSMP10 MPP( 46, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP46_TDM_FS MPP( 46, 0x2, 1, 1, 0, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP47_GPIO MPP( 47, 0x0, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP47_TSMP11 MPP( 47, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP47_TDM_DRX MPP( 47, 0x2, 1, 0, 0, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP48_TSMP12 MPP( 48, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP48_TDM_DTX MPP( 48. 0x2, 0, 1, 0, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP49_TSMP9 MPP( 49, 0x1, 1, 1, 0, 0, 0, 1 )
|
||||
+#define MPP49_TDM_CH0_RX_QL MPP( 49, 0x2, 0, 1, 0, 0, 0, 1 )
|
||||
+#define MPP49_PTP_CLK MPP( 49, 0x5, 1, 0, 0, 0, 0, 1 )
|
||||
+
|
||||
+#define MPP_MAX 49
|
||||
+
|
||||
+void kirkwood_mpp_conf(unsigned int *mpp_list);
|
||||
+
|
||||
+#endif
|
|
@ -0,0 +1,114 @@
|
|||
From: Nicolas Pitre <nico@cam.org>
|
||||
Date: Fri, 27 Feb 2009 03:55:59 +0000 (-0500)
|
||||
Subject: [ARM] Kirkwood: register internal devices in a common place
|
||||
X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=5b99d5348304a32dfca92238d27ac4de2b365175
|
||||
|
||||
[ARM] Kirkwood: register internal devices in a common place
|
||||
|
||||
The RTC and the two XOR engines are internal to the chip, and therefore
|
||||
always available since they don't depend on a particular board layout.
|
||||
|
||||
Signed-off-by: Nicolas Pitre <nico@marvell.com>
|
||||
---
|
||||
|
||||
|
||||
--- a/arch/arm/mach-kirkwood/rd88f6281-setup.c~ 2009-03-14 08:03:45.000000000 +0000
|
||||
+++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c 2009-03-14 08:03:54.000000000 +0000
|
||||
@@ -124,7 +124,6 @@
|
||||
}
|
||||
kirkwood_ge00_switch_init(&rd88f6281_switch_data, NO_IRQ);
|
||||
|
||||
- kirkwood_rtc_init();
|
||||
kirkwood_sata_init(&rd88f6281_sata_data);
|
||||
kirkwood_sdio_init(&rd88f6281_mvsdio_data);
|
||||
kirkwood_uart0_init();
|
||||
--- a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c~ 2009-03-14 08:03:32.000000000 +0000
|
||||
+++ b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c 2009-03-14 08:03:54.000000000 +0000
|
||||
@@ -55,7 +55,6 @@
|
||||
|
||||
kirkwood_ehci_init();
|
||||
kirkwood_ge00_init(&db88f6281_ge00_data);
|
||||
- kirkwood_rtc_init();
|
||||
kirkwood_sata_init(&db88f6281_sata_data);
|
||||
kirkwood_uart0_init();
|
||||
kirkwood_sdio_init(&db88f6281_mvsdio_data);
|
||||
diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
|
||||
index b1d1a87..913ea94 100644
|
||||
--- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
|
||||
+++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
|
||||
@@ -61,14 +61,11 @@ static void __init rd88f6192_init(void)
|
||||
|
||||
kirkwood_ehci_init();
|
||||
kirkwood_ge00_init(&rd88f6192_ge00_data);
|
||||
- kirkwood_rtc_init();
|
||||
kirkwood_sata_init(&rd88f6192_sata_data);
|
||||
spi_register_board_info(rd88F6192_spi_slave_info,
|
||||
ARRAY_SIZE(rd88F6192_spi_slave_info));
|
||||
kirkwood_spi_init();
|
||||
kirkwood_uart0_init();
|
||||
- kirkwood_xor0_init();
|
||||
- kirkwood_xor1_init();
|
||||
}
|
||||
|
||||
static int __init rd88f6192_pci_init(void)
|
||||
|
||||
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
|
||||
index e5076aa..9f01255 100644
|
||||
--- a/arch/arm/mach-kirkwood/common.c
|
||||
+++ b/arch/arm/mach-kirkwood/common.c
|
||||
@@ -255,7 +255,7 @@ static struct resource kirkwood_rtc_resource = {
|
||||
.flags = IORESOURCE_MEM,
|
||||
};
|
||||
|
||||
-void __init kirkwood_rtc_init(void)
|
||||
+static void __init kirkwood_rtc_init(void)
|
||||
{
|
||||
platform_device_register_simple("rtc-mv", -1, &kirkwood_rtc_resource, 1);
|
||||
}
|
||||
@@ -547,7 +547,7 @@ static struct platform_device kirkwood_xor01_channel = {
|
||||
},
|
||||
};
|
||||
|
||||
-void __init kirkwood_xor0_init(void)
|
||||
+static void __init kirkwood_xor0_init(void)
|
||||
{
|
||||
platform_device_register(&kirkwood_xor0_shared);
|
||||
|
||||
@@ -645,7 +645,7 @@ static struct platform_device kirkwood_xor11_channel = {
|
||||
},
|
||||
};
|
||||
|
||||
-void __init kirkwood_xor1_init(void)
|
||||
+static void __init kirkwood_xor1_init(void)
|
||||
{
|
||||
platform_device_register(&kirkwood_xor1_shared);
|
||||
|
||||
@@ -753,4 +753,9 @@ void __init kirkwood_init(void)
|
||||
#ifdef CONFIG_CACHE_FEROCEON_L2
|
||||
kirkwood_l2_init();
|
||||
#endif
|
||||
+
|
||||
+ /* internal devices that every board has */
|
||||
+ kirkwood_rtc_init();
|
||||
+ kirkwood_xor0_init();
|
||||
+ kirkwood_xor1_init();
|
||||
}
|
||||
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
|
||||
index 5827940..9e52826 100644
|
||||
--- a/arch/arm/mach-kirkwood/common.h
|
||||
+++ b/arch/arm/mach-kirkwood/common.h
|
||||
@@ -34,14 +34,11 @@ void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data);
|
||||
void kirkwood_ge01_init(struct mv643xx_eth_platform_data *eth_data);
|
||||
void kirkwood_ge00_switch_init(struct dsa_platform_data *d, int irq);
|
||||
void kirkwood_pcie_init(void);
|
||||
-void kirkwood_rtc_init(void);
|
||||
void kirkwood_sata_init(struct mv_sata_platform_data *sata_data);
|
||||
void kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data);
|
||||
void kirkwood_spi_init(void);
|
||||
void kirkwood_uart0_init(void);
|
||||
void kirkwood_uart1_init(void);
|
||||
-void kirkwood_xor0_init(void);
|
||||
-void kirkwood_xor1_init(void);
|
||||
|
||||
extern struct sys_timer kirkwood_timer;
|
||||
|
|
@ -0,0 +1,198 @@
|
|||
From: Nicolas Pitre <nico@cam.org>
|
||||
Date: Sat, 14 Feb 2009 08:15:55 +0000 (-0500)
|
||||
Subject: [ARM] Kirkwood: SDIO driver registration for DB6281 and RD6281
|
||||
X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=8235ee009cd839265f5dc2dace2758471a823e68
|
||||
|
||||
[ARM] Kirkwood: SDIO driver registration for DB6281 and RD6281
|
||||
|
||||
Signed-off-by: Nicolas Pitre <nico@marvell.com>
|
||||
---
|
||||
|
||||
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
|
||||
index b3404b7..e5076aa 100644
|
||||
--- a/arch/arm/mach-kirkwood/common.c
|
||||
+++ b/arch/arm/mach-kirkwood/common.c
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <mach/kirkwood.h>
|
||||
#include <plat/cache-feroceon-l2.h>
|
||||
#include <plat/ehci-orion.h>
|
||||
+#include <plat/mvsdio.h>
|
||||
#include <plat/mv_xor.h>
|
||||
#include <plat/orion_nand.h>
|
||||
#include <plat/time.h>
|
||||
@@ -296,6 +297,50 @@ void __init kirkwood_sata_init(struct mv_sata_platform_data *sata_data)
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
+ * SD/SDIO/MMC
|
||||
+ ****************************************************************************/
|
||||
+static struct resource mvsdio_resources[] = {
|
||||
+ [0] = {
|
||||
+ .start = SDIO_PHYS_BASE,
|
||||
+ .end = SDIO_PHYS_BASE + SZ_1K - 1,
|
||||
+ .flags = IORESOURCE_MEM,
|
||||
+ },
|
||||
+ [1] = {
|
||||
+ .start = IRQ_KIRKWOOD_SDIO,
|
||||
+ .end = IRQ_KIRKWOOD_SDIO,
|
||||
+ .flags = IORESOURCE_IRQ,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static u64 mvsdio_dmamask = 0xffffffffUL;
|
||||
+
|
||||
+static struct platform_device kirkwood_sdio = {
|
||||
+ .name = "mvsdio",
|
||||
+ .id = -1,
|
||||
+ .dev = {
|
||||
+ .dma_mask = &mvsdio_dmamask,
|
||||
+ .coherent_dma_mask = 0xffffffff,
|
||||
+ },
|
||||
+ .num_resources = ARRAY_SIZE(mvsdio_resources),
|
||||
+ .resource = mvsdio_resources,
|
||||
+};
|
||||
+
|
||||
+void __init kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data)
|
||||
+{
|
||||
+ u32 dev, rev;
|
||||
+
|
||||
+ kirkwood_pcie_id(&dev, &rev);
|
||||
+ if (rev == 0) /* catch all Kirkwood Z0's */
|
||||
+ mvsdio_data->clock = 100000000;
|
||||
+ else
|
||||
+ mvsdio_data->clock = 200000000;
|
||||
+ mvsdio_data->dram = &kirkwood_mbus_dram_info;
|
||||
+ kirkwood_sdio.dev.platform_data = mvsdio_data;
|
||||
+ platform_device_register(&kirkwood_sdio);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/*****************************************************************************
|
||||
* SPI
|
||||
****************************************************************************/
|
||||
static struct orion_spi_info kirkwood_spi_plat_data = {
|
||||
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
|
||||
index fe367c1..5827940 100644
|
||||
--- a/arch/arm/mach-kirkwood/common.h
|
||||
+++ b/arch/arm/mach-kirkwood/common.h
|
||||
@@ -14,6 +14,7 @@
|
||||
struct dsa_platform_data;
|
||||
struct mv643xx_eth_platform_data;
|
||||
struct mv_sata_platform_data;
|
||||
+struct mvsdio_platform_data;
|
||||
|
||||
/*
|
||||
* Basic Kirkwood init functions used early by machine-setup.
|
||||
@@ -35,6 +36,7 @@ void kirkwood_ge00_switch_init(struct dsa_platform_data *d, int irq);
|
||||
void kirkwood_pcie_init(void);
|
||||
void kirkwood_rtc_init(void);
|
||||
void kirkwood_sata_init(struct mv_sata_platform_data *sata_data);
|
||||
+void kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data);
|
||||
void kirkwood_spi_init(void);
|
||||
void kirkwood_uart0_init(void);
|
||||
void kirkwood_uart1_init(void);
|
||||
diff --git a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
|
||||
index a14c294..5c3b40d 100644
|
||||
--- a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
|
||||
+++ b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
|
||||
@@ -22,7 +22,9 @@
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/pci.h>
|
||||
#include <mach/kirkwood.h>
|
||||
+#include <plat/mvsdio.h>
|
||||
#include "common.h"
|
||||
+#include "mpp.h"
|
||||
|
||||
static struct mv643xx_eth_platform_data db88f6281_ge00_data = {
|
||||
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||
@@ -32,18 +34,31 @@ static struct mv_sata_platform_data db88f6281_sata_data = {
|
||||
.n_ports = 2,
|
||||
};
|
||||
|
||||
+static struct mvsdio_platform_data db88f6281_mvsdio_data = {
|
||||
+ .gpio_write_protect = 37,
|
||||
+ .gpio_card_detect = 38,
|
||||
+};
|
||||
+
|
||||
+static unsigned int db88f6281_mpp_config[] __initdata = {
|
||||
+ MPP37_GPIO,
|
||||
+ MPP38_GPIO,
|
||||
+ 0
|
||||
+};
|
||||
+
|
||||
static void __init db88f6281_init(void)
|
||||
{
|
||||
/*
|
||||
* Basic setup. Needs to be called early.
|
||||
*/
|
||||
kirkwood_init();
|
||||
+ kirkwood_mpp_conf(db88f6281_mpp_config);
|
||||
|
||||
kirkwood_ehci_init();
|
||||
kirkwood_ge00_init(&db88f6281_ge00_data);
|
||||
kirkwood_rtc_init();
|
||||
kirkwood_sata_init(&db88f6281_sata_data);
|
||||
kirkwood_uart0_init();
|
||||
+ kirkwood_sdio_init(&db88f6281_mvsdio_data);
|
||||
}
|
||||
|
||||
static int __init db88f6281_pci_init(void)
|
||||
diff --git a/arch/arm/mach-kirkwood/include/mach/kirkwood.h b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
|
||||
index ada480c..d3db30f 100644
|
||||
--- a/arch/arm/mach-kirkwood/include/mach/kirkwood.h
|
||||
+++ b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
|
||||
@@ -116,5 +116,7 @@
|
||||
|
||||
#define SATA_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x80000)
|
||||
|
||||
+#define SDIO_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x90000)
|
||||
+
|
||||
|
||||
#endif
|
||||
diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c
|
||||
index a1ef8a9..a8b88a5 100644
|
||||
--- a/arch/arm/mach-kirkwood/rd88f6281-setup.c
|
||||
+++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c
|
||||
@@ -24,8 +24,10 @@
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/pci.h>
|
||||
#include <mach/kirkwood.h>
|
||||
+#include <plat/mvsdio.h>
|
||||
#include <plat/orion_nand.h>
|
||||
#include "common.h"
|
||||
+#include "mpp.h"
|
||||
|
||||
static struct mtd_partition rd88f6281_nand_parts[] = {
|
||||
{
|
||||
@@ -91,6 +93,15 @@ static struct mv_sata_platform_data rd88f6281_sata_data = {
|
||||
.n_ports = 2,
|
||||
};
|
||||
|
||||
+static struct mvsdio_platform_data rd88f6281_mvsdio_data = {
|
||||
+ .gpio_card_detect = 28,
|
||||
+};
|
||||
+
|
||||
+static unsigned int rd88f6281_mpp_config[] __initdata = {
|
||||
+ MPP28_GPIO,
|
||||
+ 0
|
||||
+};
|
||||
+
|
||||
static void __init rd88f6281_init(void)
|
||||
{
|
||||
u32 dev, rev;
|
||||
@@ -99,6 +110,7 @@ static void __init rd88f6281_init(void)
|
||||
* Basic setup. Needs to be called early.
|
||||
*/
|
||||
kirkwood_init();
|
||||
+ kirkwood_mpp_conf(rd88f6281_mpp_config);
|
||||
|
||||
kirkwood_ehci_init();
|
||||
|
||||
@@ -114,6 +126,7 @@
|
||||
|
||||
kirkwood_rtc_init();
|
||||
kirkwood_sata_init(&rd88f6281_sata_data);
|
||||
+ kirkwood_sdio_init(&rd88f6281_mvsdio_data);
|
||||
kirkwood_uart0_init();
|
||||
|
||||
platform_device_register(&rd88f6281_nand_flash);
|
|
@ -0,0 +1,62 @@
|
|||
From: Nicolas Pitre <nico@cam.org>
|
||||
Date: Tue, 3 Mar 2009 06:16:07 +0000 (-0500)
|
||||
Subject: [ARM] Kirkwood: SheevaPlug LED support
|
||||
X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=efd8c1bb08a981f0e6581aedb7a842924816a78c
|
||||
|
||||
[ARM] Kirkwood: SheevaPlug LED support
|
||||
|
||||
Signed-off-by: Nicolas Pitre <nico@marvell.com>
|
||||
---
|
||||
|
||||
diff --git a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c
|
||||
index c1cb9f4..831e4a5 100644
|
||||
--- a/arch/arm/mach-kirkwood/sheevaplug-setup.c
|
||||
+++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/gpio.h>
|
||||
+#include <linux/leds.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <mach/kirkwood.h>
|
||||
@@ -73,8 +74,31 @@ static struct mvsdio_platform_data sheevaplug_mvsdio_data = {
|
||||
// unfortunately the CD signal has not been connected */
|
||||
};
|
||||
|
||||
+static struct gpio_led sheevaplug_led_pins[] = {
|
||||
+ {
|
||||
+ .name = "plug:green:health",
|
||||
+ .default_trigger = "default-on",
|
||||
+ .gpio = 49,
|
||||
+ .active_low = 1,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static struct gpio_led_platform_data sheevaplug_led_data = {
|
||||
+ .leds = sheevaplug_led_pins,
|
||||
+ .num_leds = ARRAY_SIZE(sheevaplug_led_pins),
|
||||
+};
|
||||
+
|
||||
+static struct platform_device sheevaplug_leds = {
|
||||
+ .name = "leds-gpio",
|
||||
+ .id = -1,
|
||||
+ .dev = {
|
||||
+ .platform_data = &sheevaplug_led_data,
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
static unsigned int sheevaplug_mpp_config[] __initdata = {
|
||||
MPP29_GPIO, /* USB Power Enable */
|
||||
+ MPP49_GPIO, /* LED */
|
||||
0
|
||||
};
|
||||
|
||||
@@ -97,6 +121,7 @@ static void __init sheevaplug_init(void)
|
||||
kirkwood_sdio_init(&sheevaplug_mvsdio_data);
|
||||
|
||||
platform_device_register(&sheevaplug_nand_flash);
|
||||
+ platform_device_register(&sheevaplug_leds);
|
||||
}
|
||||
|
||||
MACHINE_START(SHEEVAPLUG, "Marvell SheevaPlug Reference Board")
|
|
@ -0,0 +1,59 @@
|
|||
From: Nicolas Pitre <nico@cam.org>
|
||||
Date: Tue, 3 Mar 2009 04:44:41 +0000 (-0500)
|
||||
Subject: [ARM] Kirkwood: SheevaPlug USB Power Enable setup
|
||||
X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=3361de48dd360be04f02f0ebda969b15835ed39f
|
||||
|
||||
[ARM] Kirkwood: SheevaPlug USB Power Enable setup
|
||||
|
||||
Ideally, the default should be set to 0 and let the EHCI driver turn
|
||||
it on as needed. This makes USB usable in the mean time.
|
||||
|
||||
Signed-off-by: Nicolas Pitre <nico@marvell.com>
|
||||
---
|
||||
|
||||
diff --git a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c
|
||||
index d48989d..c1cb9f4 100644
|
||||
--- a/arch/arm/mach-kirkwood/sheevaplug-setup.c
|
||||
+++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c
|
||||
@@ -14,12 +14,14 @@
|
||||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/mv643xx_eth.h>
|
||||
+#include <linux/gpio.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <mach/kirkwood.h>
|
||||
#include <plat/mvsdio.h>
|
||||
#include <plat/orion_nand.h>
|
||||
#include "common.h"
|
||||
+#include "mpp.h"
|
||||
|
||||
static struct mtd_partition sheevaplug_nand_parts[] = {
|
||||
{
|
||||
@@ -71,15 +73,26 @@ static struct mvsdio_platform_data sheevaplug_mvsdio_data = {
|
||||
// unfortunately the CD signal has not been connected */
|
||||
};
|
||||
|
||||
+static unsigned int sheevaplug_mpp_config[] __initdata = {
|
||||
+ MPP29_GPIO, /* USB Power Enable */
|
||||
+ 0
|
||||
+};
|
||||
+
|
||||
static void __init sheevaplug_init(void)
|
||||
{
|
||||
/*
|
||||
* Basic setup. Needs to be called early.
|
||||
*/
|
||||
kirkwood_init();
|
||||
+ kirkwood_mpp_conf(sheevaplug_mpp_config);
|
||||
|
||||
kirkwood_uart0_init();
|
||||
+
|
||||
+ if (gpio_request(29, "USB Power Enable") != 0 ||
|
||||
+ gpio_direction_output(29, 1) != 0)
|
||||
+ printk(KERN_ERR "can't set up GPIO 29 (USB Power Enable)\n");
|
||||
kirkwood_ehci_init();
|
||||
+
|
||||
kirkwood_ge00_init(&sheevaplug_ge00_data);
|
||||
kirkwood_sdio_init(&sheevaplug_mvsdio_data);
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
From: Shadi Ammouri <shadi@marvell.com>
|
||||
Date: Tue, 24 Feb 2009 20:26:23 +0000 (-0500)
|
||||
Subject: [ARM] Kirkwood: Marvell SheevaPlug support
|
||||
X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=cb418a5633f257755359347055f8b76e1524f585
|
||||
|
||||
[ARM] Kirkwood: Marvell SheevaPlug support
|
||||
|
||||
Signed-off-by: Nicolas Pitre <nico@marvell.com>
|
||||
---
|
||||
|
||||
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
|
||||
index 3600cd9..5324436 100644
|
||||
--- a/arch/arm/mach-kirkwood/Kconfig
|
||||
+++ b/arch/arm/mach-kirkwood/Kconfig
|
||||
@@ -20,6 +20,12 @@ config MACH_RD88F6281
|
||||
Say 'Y' here if you want your kernel to support the
|
||||
Marvell RD-88F6281 Reference Board.
|
||||
|
||||
+config MACH_SHEEVAPLUG
|
||||
+ bool "Marvell SheevaPlug Reference Board"
|
||||
+ help
|
||||
+ Say 'Y' here if you want your kernel to support the
|
||||
+ Marvell SheevaPlug Reference Board.
|
||||
+
|
||||
endmenu
|
||||
|
||||
endif
|
||||
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
|
||||
index fdff35c..de81b4b 100644
|
||||
--- a/arch/arm/mach-kirkwood/Makefile
|
||||
+++ b/arch/arm/mach-kirkwood/Makefile
|
||||
@@ -3,3 +3,4 @@ obj-y += common.o addr-map.o irq.o pcie.o mpp.o
|
||||
obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o
|
||||
obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o
|
||||
obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o
|
||||
+obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o
|
||||
diff --git a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c
|
||||
new file mode 100644
|
||||
index 0000000..d48989d
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c
|
||||
@@ -0,0 +1,98 @@
|
||||
+/*
|
||||
+ * arch/arm/mach-kirkwood/sheevaplug-setup.c
|
||||
+ *
|
||||
+ * Marvell SheevaPlug Reference Board Setup
|
||||
+ *
|
||||
+ * 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/platform_device.h>
|
||||
+#include <linux/mtd/nand.h>
|
||||
+#include <linux/mtd/partitions.h>
|
||||
+#include <linux/mv643xx_eth.h>
|
||||
+#include <asm/mach-types.h>
|
||||
+#include <asm/mach/arch.h>
|
||||
+#include <mach/kirkwood.h>
|
||||
+#include <plat/mvsdio.h>
|
||||
+#include <plat/orion_nand.h>
|
||||
+#include "common.h"
|
||||
+
|
||||
+static struct mtd_partition sheevaplug_nand_parts[] = {
|
||||
+ {
|
||||
+ .name = "u-boot",
|
||||
+ .offset = 0,
|
||||
+ .size = SZ_1M
|
||||
+ }, {
|
||||
+ .name = "uImage",
|
||||
+ .offset = MTDPART_OFS_NXTBLK,
|
||||
+ .size = SZ_4M
|
||||
+ }, {
|
||||
+ .name = "root",
|
||||
+ .offset = MTDPART_OFS_NXTBLK,
|
||||
+ .size = MTDPART_SIZ_FULL
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static struct resource sheevaplug_nand_resource = {
|
||||
+ .flags = IORESOURCE_MEM,
|
||||
+ .start = KIRKWOOD_NAND_MEM_PHYS_BASE,
|
||||
+ .end = KIRKWOOD_NAND_MEM_PHYS_BASE +
|
||||
+ KIRKWOOD_NAND_MEM_SIZE - 1,
|
||||
+};
|
||||
+
|
||||
+static struct orion_nand_data sheevaplug_nand_data = {
|
||||
+ .parts = sheevaplug_nand_parts,
|
||||
+ .nr_parts = ARRAY_SIZE(sheevaplug_nand_parts),
|
||||
+ .cle = 0,
|
||||
+ .ale = 1,
|
||||
+ .width = 8,
|
||||
+ .chip_delay = 25,
|
||||
+};
|
||||
+
|
||||
+static struct platform_device sheevaplug_nand_flash = {
|
||||
+ .name = "orion_nand",
|
||||
+ .id = -1,
|
||||
+ .dev = {
|
||||
+ .platform_data = &sheevaplug_nand_data,
|
||||
+ },
|
||||
+ .resource = &sheevaplug_nand_resource,
|
||||
+ .num_resources = 1,
|
||||
+};
|
||||
+
|
||||
+static struct mv643xx_eth_platform_data sheevaplug_ge00_data = {
|
||||
+ .phy_addr = MV643XX_ETH_PHY_ADDR(0),
|
||||
+};
|
||||
+
|
||||
+static struct mvsdio_platform_data sheevaplug_mvsdio_data = {
|
||||
+ // unfortunately the CD signal has not been connected */
|
||||
+};
|
||||
+
|
||||
+static void __init sheevaplug_init(void)
|
||||
+{
|
||||
+ /*
|
||||
+ * Basic setup. Needs to be called early.
|
||||
+ */
|
||||
+ kirkwood_init();
|
||||
+
|
||||
+ kirkwood_uart0_init();
|
||||
+ kirkwood_ehci_init();
|
||||
+ kirkwood_ge00_init(&sheevaplug_ge00_data);
|
||||
+ kirkwood_sdio_init(&sheevaplug_mvsdio_data);
|
||||
+
|
||||
+ platform_device_register(&sheevaplug_nand_flash);
|
||||
+}
|
||||
+
|
||||
+MACHINE_START(SHEEVAPLUG, "Marvell SheevaPlug Reference Board")
|
||||
+ /* Maintainer: shadi Ammouri <shadi@marvell.com> */
|
||||
+ .phys_io = KIRKWOOD_REGS_PHYS_BASE,
|
||||
+ .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc,
|
||||
+ .boot_params = 0x00000100,
|
||||
+ .init_machine = sheevaplug_init,
|
||||
+ .map_io = kirkwood_map_io,
|
||||
+ .init_irq = kirkwood_init_irq,
|
||||
+ .timer = &kirkwood_timer,
|
||||
+MACHINE_END
|
||||
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
|
||||
index fd23c0e..1fbfcac 100644
|
||||
--- a/arch/arm/tools/mach-types
|
||||
+++ b/arch/arm/tools/mach-types
|
||||
@@ -1994,3 +1994,4 @@ benzina MACH_BENZINA BENZINA 2003
|
||||
blaze MACH_BLAZE BLAZE 2004
|
||||
linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
|
||||
htcvenus MACH_HTCVENUS HTCVENUS 2006
|
||||
+sheevaplug MACH_SHEEVAPLUG SHEEVAPLUG 2097
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,110 @@
|
|||
From: Nicolas Pitre <nico@cam.org>
|
||||
Date: Mon, 2 Feb 2009 20:27:55 +0000 (-0500)
|
||||
Subject: [ARM] Orion: make gpio /input/output validation separate
|
||||
X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=28d27cf4ce8378180eda32aa7d8e778c9e72a54f
|
||||
|
||||
[ARM] Orion: make gpio /input/output validation separate
|
||||
|
||||
Especially on Kirkwood, a couple GPIOs are actually only output capable.
|
||||
Let's separate the ability to configure a GPIO as input or output to
|
||||
accommodate this restriction.
|
||||
|
||||
Signed-off-by: Nicolas Pitre <nico@marvell.com>
|
||||
---
|
||||
|
||||
diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
|
||||
index 0d12c21..32eb9e3 100644
|
||||
--- a/arch/arm/plat-orion/gpio.c
|
||||
+++ b/arch/arm/plat-orion/gpio.c
|
||||
@@ -19,7 +19,8 @@
|
||||
|
||||
static DEFINE_SPINLOCK(gpio_lock);
|
||||
static const char *gpio_label[GPIO_MAX]; /* non null for allocated GPIOs */
|
||||
-static unsigned long gpio_valid[BITS_TO_LONGS(GPIO_MAX)];
|
||||
+static unsigned long gpio_valid_input[BITS_TO_LONGS(GPIO_MAX)];
|
||||
+static unsigned long gpio_valid_output[BITS_TO_LONGS(GPIO_MAX)];
|
||||
|
||||
static inline void __set_direction(unsigned pin, int input)
|
||||
{
|
||||
@@ -53,7 +54,7 @@ int gpio_direction_input(unsigned pin)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
- if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
+ if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid_input)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -83,7 +84,7 @@ int gpio_direction_output(unsigned pin, int value)
|
||||
unsigned long flags;
|
||||
u32 u;
|
||||
|
||||
- if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
+ if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid_output)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -161,7 +162,9 @@ int gpio_request(unsigned pin, const char *label)
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
- if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
+ if (pin >= GPIO_MAX ||
|
||||
+ !(test_bit(pin, gpio_valid_input) ||
|
||||
+ test_bit(pin, gpio_valid_output))) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -183,7 +186,9 @@ EXPORT_SYMBOL(gpio_request);
|
||||
|
||||
void gpio_free(unsigned pin)
|
||||
{
|
||||
- if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
+ if (pin >= GPIO_MAX ||
|
||||
+ !(test_bit(pin, gpio_valid_input) ||
|
||||
+ test_bit(pin, gpio_valid_output))) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return;
|
||||
}
|
||||
@@ -208,12 +213,18 @@ void __init orion_gpio_set_unused(unsigned pin)
|
||||
__set_direction(pin, 0);
|
||||
}
|
||||
|
||||
-void __init orion_gpio_set_valid(unsigned pin, int valid)
|
||||
+void __init orion_gpio_set_valid(unsigned pin, int mode)
|
||||
{
|
||||
- if (valid)
|
||||
- __set_bit(pin, gpio_valid);
|
||||
+ if (mode == 1)
|
||||
+ mode = GPIO_INPUT_OK | GPIO_OUTPUT_OK;
|
||||
+ if (mode & GPIO_INPUT_OK)
|
||||
+ __set_bit(pin, gpio_valid_input);
|
||||
else
|
||||
- __clear_bit(pin, gpio_valid);
|
||||
+ __clear_bit(pin, gpio_valid_input);
|
||||
+ if (mode & GPIO_OUTPUT_OK)
|
||||
+ __set_bit(pin, gpio_valid_output);
|
||||
+ else
|
||||
+ __clear_bit(pin, gpio_valid_output);
|
||||
}
|
||||
|
||||
void orion_gpio_set_blink(unsigned pin, int blink)
|
||||
diff --git a/arch/arm/plat-orion/include/plat/gpio.h b/arch/arm/plat-orion/include/plat/gpio.h
|
||||
index ec743e8..33f6c6a 100644
|
||||
--- a/arch/arm/plat-orion/include/plat/gpio.h
|
||||
+++ b/arch/arm/plat-orion/include/plat/gpio.h
|
||||
@@ -25,9 +25,13 @@ void gpio_set_value(unsigned pin, int value);
|
||||
* Orion-specific GPIO API extensions.
|
||||
*/
|
||||
void orion_gpio_set_unused(unsigned pin);
|
||||
-void orion_gpio_set_valid(unsigned pin, int valid);
|
||||
void orion_gpio_set_blink(unsigned pin, int blink);
|
||||
|
||||
+#define GPIO_BIDI_OK (1 << 0)
|
||||
+#define GPIO_INPUT_OK (1 << 1)
|
||||
+#define GPIO_OUTPUT_OK (1 << 2)
|
||||
+void orion_gpio_set_valid(unsigned pin, int mode);
|
||||
+
|
||||
/*
|
||||
* GPIO interrupt handling.
|
||||
*/
|
|
@ -26,3 +26,12 @@
|
|||
+ bugfix/powerpc/lpar-console.patch
|
||||
#+ bugfix/all/wireless-regulatory-default-EU.patch
|
||||
+ features/sparc/video-sunxvr500-intergraph.patch
|
||||
# Kirkwood support, will be in 2.6.30
|
||||
+ features/arm/orion-gpio-input-output.patch
|
||||
+ features/arm/kw-mpp.patch
|
||||
+ features/arm/mv-sdio.patch
|
||||
+ features/arm/kw-register-sdio.patch
|
||||
+ features/arm/kw-register-internal-devices.patch
|
||||
+ features/arm/kw-sheevaplug.patch
|
||||
+ features/arm/kw-sheevaplug-usb-power.patch
|
||||
+ features/arm/kw-sheevaplug-led.patch
|
||||
|
|
Loading…
Reference in New Issue