* [PATCH v3 0/5] LogicPD minimal board support for LV_SOM and Torpedo
[not found] <1285358338-3403-1-git-send-email-tim.nordell@logicpd.com>
@ 2010-09-24 23:12 ` Tim Nordell
2010-09-24 23:12 ` [PATCH v3 1/5] Adding LogicPD OMAP3 board support Tim Nordell
` (4 subsequent siblings)
5 siblings, 0 replies; 6+ messages in thread
From: Tim Nordell @ 2010-09-24 23:12 UTC (permalink / raw)
To: linux-arm-kernel
Adding minimal board support for LogicPD's LV_SOM and Torpedo devkits.
This mainly includes only Serial, Ethernet and SD card support for now.
This was tested (and based) against 2.6.36-rc5.
>From bogus@does.not.exist.com Sat Sep 18 23:17:21 2010
From: bogus@does.not.exist.com ()
Date: Sun, 19 Sep 2010 03:17:21 -0000
Subject: No subject
Message-ID: <mailman.7.1285369975.1886.linux-arm-kernel@lists.infradead.org>
- Added in a fifth patch that configures UART1 for low level debug
support on the LV_SOM and Torpedo
Differences from Patch v2 1/4:
- I've removed the init_sdram() functions and have passed NULL into
sdrc parameters for omap2_init_common_hw(). This is mainly because
we have multiple revisions of these boards that contain different
memory settings and since we currently don't have any code in the
kernel for detecting which revision is being used (it is possible
and will be done later), we will leave it up to the boot loader to
correctly setup the memory timings.
- Modified the description slightly in Kconfig so that the LV_SOM
and torpedo were consistent in their naming. Removed a couple of
trailing spaces here as well
- Fixed indentation of "vmmc", line inside omap3logic_vmmc1_supply
- Removed omap3logic_map_io() and replaced with generic
omap3_map_io(). These functions were identical and it didn't make
sense to have the local board one.
- Removed addition of boards to omap2_defconfig, and added "default y"
to both boards in Kconfig
Differences from Patch v2 2/4:
- Moved comments in board_mmc_init() relating to which board was
detected to inside each each conditional portion of code rather
than immediately above the given code section
Differences from Patch v2 3/4:
- No changes
Differences from Patch v2 4/4:
- Moved the omap3torpedo_fix_pbias_voltage() out to part of the
omap3logic_init() function rather than being called from within
the SMSC911x init function. This is because there are other IRQ
lines that also use the pins affected by having the rail turned on
for these GPIO pins.
- Moved the comments to just inside the conditionals for lv_som
versus torpedo selection in board_smsc911x_init(), rather than
above the conditionals of each.
- Removed dead code from within board_smsc911x_init().
Note: I am taking over from Jacob Tanenbaum's earlier patches that were
submitted in August. I wasn't sure entirely what the protocol was,
so these are all signed by me.
Tim Nordell (5):
Adding LogicPD OMAP3 board support
ARM: OMAP3LOGIC: Adding SDMMC support
ARM: OMAP3: Add generic smsc911x support when connected to GPMC
ARM: OMAP3LOGIC: Added SMSC Ethernet board support
ARM: OMAP3LOGIC: Adding low-level debug support
arch/arm/mach-omap2/Kconfig | 18 ++
arch/arm/mach-omap2/Makefile | 7 +
arch/arm/mach-omap2/board-omap3logic.c | 244 +++++++++++++++++++++++
arch/arm/mach-omap2/gpmc-smsc911x.c | 113 +++++++++++
arch/arm/plat-omap/include/plat/gpmc-smsc911x.h | 35 ++++
arch/arm/plat-omap/include/plat/uncompress.h | 2 +
6 files changed, 419 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/mach-omap2/board-omap3logic.c
create mode 100644 arch/arm/mach-omap2/gpmc-smsc911x.c
create mode 100644 arch/arm/plat-omap/include/plat/gpmc-smsc911x.h
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 1/5] Adding LogicPD OMAP3 board support
[not found] <1285358338-3403-1-git-send-email-tim.nordell@logicpd.com>
2010-09-24 23:12 ` [PATCH v3 0/5] LogicPD minimal board support for LV_SOM and Torpedo Tim Nordell
@ 2010-09-24 23:12 ` Tim Nordell
2010-09-24 23:12 ` [PATCH v3 2/5] ARM: OMAP3LOGIC: Adding SDMMC support Tim Nordell
` (3 subsequent siblings)
5 siblings, 0 replies; 6+ messages in thread
From: Tim Nordell @ 2010-09-24 23:12 UTC (permalink / raw)
To: linux-arm-kernel
Adding support for LogicPD's OMAP 3530 LV SOM and
OMAP 35x Torpedo board.
Signed-off-by: Tim Nordell <tim.nordell@logicpd.com>
---
arch/arm/mach-omap2/Kconfig | 18 ++++
arch/arm/mach-omap2/Makefile | 4 +
arch/arm/mach-omap2/board-omap3logic.c | 143 ++++++++++++++++++++++++++++++++
3 files changed, 165 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/mach-omap2/board-omap3logic.c
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index b48bacf..2cc61fa 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -135,6 +135,24 @@ config MACH_OMAP_LDP
default y
select OMAP_PACKAGE_CBB
+config MACH_OMAP3530_LV_SOM
+ bool "OMAP3 Logic 3530 LV SOM board"
+ depends on ARCH_OMAP3
+ default y
+ help
+ Support for the LogicPD OMAP3530 SOM Development kit
+ for full description please see the products webpage at
+ http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap35x-development-kit
+
+config MACH_OMAP3_TORPEDO
+ bool "OMAP3 Logic 35x Torpedo board"
+ depends on ARCH_OMAP3
+ default y
+ help
+ Support for the LogicPD OMAP35x Torpedo Development kit
+ for full description please see the products webpage at
+ http://www.logicpd.com/products/development-kits/zoom-omap35x-torpedo-development-kit
+
config MACH_OVERO
bool "Gumstix Overo board"
depends on ARCH_OMAP3
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 88d3a1e..9feadd8 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -115,6 +115,10 @@ obj-$(CONFIG_MACH_DEVKIT8000) += board-devkit8000.o \
obj-$(CONFIG_MACH_OMAP_LDP) += board-ldp.o \
board-flash.o \
hsmmc.o
+obj-$(CONFIG_MACH_OMAP3530_LV_SOM) += board-omap3logic.o \
+ hsmmc.o
+obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o \
+ hsmmc.o
obj-$(CONFIG_MACH_OVERO) += board-overo.o \
hsmmc.o
obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o \
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
new file mode 100644
index 0000000..72769f7
--- /dev/null
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -0,0 +1,143 @@
+/*
+ * linux/arch/arm/mach-omap2/board-omap3logic.c
+ *
+ * Copyright (C) 2010 Li-Pro.Net
+ * Stephan Linz <linz@li-pro.net>
+ *
+ * Copyright (C) 2010 Logic Product Development, Inc.
+ * Peter Barada <peter.barada@logicpd.com>
+ *
+ * Modified from Beagle, EVM, and RX51
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/clk.h>
+#include <linux/io.h>
+#include <linux/gpio.h>
+
+#include <linux/regulator/machine.h>
+
+#include <linux/i2c/twl.h>
+
+#include <mach/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+
+#include "mux.h"
+
+#include <plat/mux.h>
+#include <plat/board.h>
+#include <plat/common.h>
+#include <plat/gpmc.h>
+#include <plat/timer-gp.h>
+#include <plat/sdrc.h>
+#include <plat/control.h>
+
+#define OMAP3LOGIC_SMSC911X_CS 1
+
+#define OMAP3530_LV_SOM_MMC_GPIO_CD 110
+#define OMAP3530_LV_SOM_MMC_GPIO_WP 126
+#define OMAP3530_LV_SOM_SMSC911X_GPIO_IRQ 152
+
+#define OMAP3_TORPEDO_MMC_GPIO_CD 127
+#define OMAP3_TORPEDO_SMSC911X_GPIO_IRQ 129
+
+static struct regulator_consumer_supply omap3logic_vmmc1_supply = {
+ .supply = "vmmc",
+};
+
+/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
+static struct regulator_init_data omap3logic_vmmc1 = {
+ .constraints = {
+ .name = "VMMC1",
+ .min_uV = 1850000,
+ .max_uV = 3150000,
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
+ | REGULATOR_MODE_STANDBY,
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
+ | REGULATOR_CHANGE_MODE
+ | REGULATOR_CHANGE_STATUS,
+ },
+ .num_consumer_supplies = 1,
+ .consumer_supplies = &omap3logic_vmmc1_supply,
+};
+
+static struct twl4030_gpio_platform_data omap3logic_gpio_data = {
+ .gpio_base = OMAP_MAX_GPIO_LINES,
+ .irq_base = TWL4030_GPIO_IRQ_BASE,
+ .irq_end = TWL4030_GPIO_IRQ_END,
+ .use_leds = true,
+ .pullups = BIT(1),
+ .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8)
+ | BIT(13) | BIT(15) | BIT(16) | BIT(17),
+};
+
+static struct twl4030_platform_data omap3logic_twldata = {
+ .irq_base = TWL4030_IRQ_BASE,
+ .irq_end = TWL4030_IRQ_END,
+
+ /* platform_data for children goes here */
+ .gpio = &omap3logic_gpio_data,
+};
+
+static struct i2c_board_info __initdata omap3logic_i2c_boardinfo[] = {
+ {
+ I2C_BOARD_INFO("twl4030", 0x48),
+ .flags = I2C_CLIENT_WAKE,
+ .irq = INT_34XX_SYS_NIRQ,
+ .platform_data = &omap3logic_twldata,
+ },
+};
+
+static int __init omap3logic_i2c_init(void)
+{
+ omap_register_i2c_bus(1, 2600, omap3logic_i2c_boardinfo,
+ ARRAY_SIZE(omap3logic_i2c_boardinfo));
+ return 0;
+}
+
+static void __init omap3logic_init_irq(void)
+{
+ omap2_init_common_hw(NULL, NULL);
+ omap_init_irq();
+ omap_gpio_init();
+}
+
+static void __init omap3logic_init(void)
+{
+ omap3logic_i2c_init();
+ omap_serial_init();
+
+ /* Ensure SDRC pins are mux'd for self-refresh */
+ omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
+ omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
+}
+
+MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
+ .phys_io = 0x48000000,
+ .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap3_map_io,
+ .init_irq = omap3logic_init_irq,
+ .init_machine = omap3logic_init,
+ .timer = &omap_timer,
+MACHINE_END
+
+MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
+ .phys_io = 0x48000000,
+ .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap3_map_io,
+ .init_irq = omap3logic_init_irq,
+ .init_machine = omap3logic_init,
+ .timer = &omap_timer,
+MACHINE_END
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 2/5] ARM: OMAP3LOGIC: Adding SDMMC support
[not found] <1285358338-3403-1-git-send-email-tim.nordell@logicpd.com>
2010-09-24 23:12 ` [PATCH v3 0/5] LogicPD minimal board support for LV_SOM and Torpedo Tim Nordell
2010-09-24 23:12 ` [PATCH v3 1/5] Adding LogicPD OMAP3 board support Tim Nordell
@ 2010-09-24 23:12 ` Tim Nordell
2010-09-24 23:12 ` [PATCH v3 3/5] ARM: OMAP3: Add generic smsc911x support when connected to GPMC Tim Nordell
` (2 subsequent siblings)
5 siblings, 0 replies; 6+ messages in thread
From: Tim Nordell @ 2010-09-24 23:12 UTC (permalink / raw)
To: linux-arm-kernel
Add low-level initialization for hsmmc controller for
LogicPD's OMAP 3530 LV SOM and OMAP 35x Torpedo board.
Signed-off-by: Tim Nordell <tim.nordell@logicpd.com>
---
arch/arm/mach-omap2/board-omap3logic.c | 38 +++++++++++++++++++++++++++++++-
1 files changed, 37 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index 72769f7..ec6d6f1 100644
--- a/arch/arm/mach-omap2/board-omap3logic.c
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -33,6 +33,7 @@
#include <asm/mach/map.h>
#include "mux.h"
+#include "hsmmc.h"
#include <plat/mux.h>
#include <plat/board.h>
@@ -87,6 +88,7 @@ static struct twl4030_platform_data omap3logic_twldata = {
/* platform_data for children goes here */
.gpio = &omap3logic_gpio_data,
+ .vmmc1 = &omap3logic_vmmc1,
};
static struct i2c_board_info __initdata omap3logic_i2c_boardinfo[] = {
@@ -105,6 +107,40 @@ static int __init omap3logic_i2c_init(void)
return 0;
}
+static struct omap2_hsmmc_info __initdata board_mmc_info[] = {
+ {
+ .name = "external",
+ .mmc = 1,
+ .wires = 4,
+ .gpio_cd = -EINVAL,
+ .gpio_wp = -EINVAL,
+ },
+ {} /* Terminator */
+};
+
+static void __init board_mmc_init(void)
+{
+ if (machine_is_omap3530_lv_som()) {
+ /* OMAP3530 LV SOM board */
+ board_mmc_info[0].gpio_cd = OMAP3530_LV_SOM_MMC_GPIO_CD;
+ board_mmc_info[0].gpio_wp = OMAP3530_LV_SOM_MMC_GPIO_WP;
+ omap_mux_init_signal("gpio_110", OMAP_PIN_OUTPUT);
+ omap_mux_init_signal("gpio_126", OMAP_PIN_OUTPUT);
+ } else if (machine_is_omap3_torpedo()) {
+ /* OMAP3 Torpedo board */
+ board_mmc_info[0].gpio_cd = OMAP3_TORPEDO_MMC_GPIO_CD;
+ omap_mux_init_signal("gpio_127", OMAP_PIN_OUTPUT);
+ } else {
+ /* unsupported board */
+ printk(KERN_ERR "%s(): unknown machine type\n", __func__);
+ return;
+ }
+
+ omap2_hsmmc_init(board_mmc_info);
+ /* link regulators to MMC adapters */
+ omap3logic_vmmc1_supply.dev = board_mmc_info[0].dev;
+}
+
static void __init omap3logic_init_irq(void)
{
omap2_init_common_hw(NULL, NULL);
@@ -116,7 +152,7 @@ static void __init omap3logic_init(void)
{
omap3logic_i2c_init();
omap_serial_init();
-
+ board_mmc_init();
/* Ensure SDRC pins are mux'd for self-refresh */
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 3/5] ARM: OMAP3: Add generic smsc911x support when connected to GPMC
[not found] <1285358338-3403-1-git-send-email-tim.nordell@logicpd.com>
` (2 preceding siblings ...)
2010-09-24 23:12 ` [PATCH v3 2/5] ARM: OMAP3LOGIC: Adding SDMMC support Tim Nordell
@ 2010-09-24 23:12 ` Tim Nordell
2010-09-24 23:12 ` [PATCH v3 4/5] ARM: OMAP3LOGIC: Added SMSC Ethernet board support Tim Nordell
2010-09-24 23:12 ` [PATCH v3 5/5] ARM: OMAP3LOGIC: Adding low-level debug support Tim Nordell
5 siblings, 0 replies; 6+ messages in thread
From: Tim Nordell @ 2010-09-24 23:12 UTC (permalink / raw)
To: linux-arm-kernel
Introduce of a generic way to setup smsc911x based Ethernet
controller connected to GPMC similar to gpmc-smc91x but without
timing setup.
Signed-off-by: Tim Nordell <tim.nordell@logicpd.com>
---
arch/arm/mach-omap2/Makefile | 3 +
arch/arm/mach-omap2/gpmc-smsc911x.c | 113 +++++++++++++++++++++++
arch/arm/plat-omap/include/plat/gpmc-smsc911x.h | 35 +++++++
3 files changed, 151 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/mach-omap2/gpmc-smsc911x.c
create mode 100644 arch/arm/plat-omap/include/plat/gpmc-smsc911x.h
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 9feadd8..f7ec388 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -178,3 +178,6 @@ obj-y += $(nand-m) $(nand-y)
smc91x-$(CONFIG_SMC91X) := gpmc-smc91x.o
obj-y += $(smc91x-m) $(smc91x-y)
+
+smsc911x-$(CONFIG_SMSC911X) := gpmc-smsc911x.o
+obj-y += $(smsc911x-m) $(smsc911x-y)
diff --git a/arch/arm/mach-omap2/gpmc-smsc911x.c b/arch/arm/mach-omap2/gpmc-smsc911x.c
new file mode 100644
index 0000000..703f150
--- /dev/null
+++ b/arch/arm/mach-omap2/gpmc-smsc911x.c
@@ -0,0 +1,113 @@
+/*
+ * linux/arch/arm/mach-omap2/gpmc-smsc911x.c
+ *
+ * Copyright (C) 2009 Li-Pro.Net
+ * Stephan Linz <linz@li-pro.net>
+ *
+ * Modified from linux/arch/arm/mach-omap2/gpmc-smc91x.c
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+#include <linux/gpio.h>
+#include <linux/delay.h>
+#include <linux/interrupt.h>
+#include <linux/io.h>
+#include <linux/smsc911x.h>
+
+#include <plat/board.h>
+#include <plat/gpmc.h>
+#include <plat/gpmc-smsc911x.h>
+
+static struct omap_smsc911x_platform_data *gpmc_cfg;
+
+static struct resource gpmc_smsc911x_resources[] = {
+ [0] = {
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct smsc911x_platform_config gpmc_smsc911x_config = {
+ .phy_interface = PHY_INTERFACE_MODE_MII,
+ .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
+ .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
+ .flags = SMSC911X_USE_16BIT,
+};
+
+static struct platform_device gpmc_smsc911x_device = {
+ .name = "smsc911x",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(gpmc_smsc911x_resources),
+ .resource = gpmc_smsc911x_resources,
+ .dev = {
+ .platform_data = &gpmc_smsc911x_config,
+ },
+};
+
+/*
+ * Initialize smsc911x device connected to the GPMC. Note that we
+ * assume that pin multiplexing is done in the board-*.c file,
+ * or in the bootloader.
+ */
+void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)
+{
+ unsigned long cs_mem_base;
+ int ret;
+
+ gpmc_cfg = board_data;
+
+ if (gpmc_cs_request(gpmc_cfg->cs, SZ_16M, &cs_mem_base) < 0) {
+ printk(KERN_ERR "Failed to request GPMC mem for smsc911x\n");
+ return;
+ }
+
+ gpmc_smsc911x_resources[0].start = cs_mem_base + 0x0;
+ gpmc_smsc911x_resources[0].end = cs_mem_base + 0xff;
+
+ if (gpio_request(gpmc_cfg->gpio_irq, "smsc911x irq") < 0) {
+ printk(KERN_ERR "Failed to request GPIO%d for smsc911x IRQ\n",
+ gpmc_cfg->gpio_irq);
+ goto free1;
+ }
+
+ gpio_direction_input(gpmc_cfg->gpio_irq);
+ gpmc_smsc911x_resources[1].start = gpio_to_irq(gpmc_cfg->gpio_irq);
+ gpmc_smsc911x_resources[1].flags |=
+ (gpmc_cfg->flags & IRQF_TRIGGER_MASK);
+
+ if (gpio_is_valid(gpmc_cfg->gpio_reset)) {
+ ret = gpio_request(gpmc_cfg->gpio_reset, "smsc911x reset");
+ if (ret) {
+ printk(KERN_ERR "Failed to request GPIO%d for smsc911x reset\n",
+ gpmc_cfg->gpio_reset);
+ goto free2;
+ }
+
+ gpio_direction_output(gpmc_cfg->gpio_reset, 1);
+ gpio_set_value(gpmc_cfg->gpio_reset, 0);
+ msleep(100);
+ gpio_set_value(gpmc_cfg->gpio_reset, 1);
+ }
+
+ if (platform_device_register(&gpmc_smsc911x_device) < 0) {
+ printk(KERN_ERR "Unable to register smsc911x device\n");
+ gpio_free(gpmc_cfg->gpio_reset);
+ goto free2;
+ }
+
+ return;
+
+free2:
+ gpio_free(gpmc_cfg->gpio_irq);
+free1:
+ gpmc_cs_free(gpmc_cfg->cs);
+
+ printk(KERN_ERR "Could not initialize smsc911x\n");
+}
diff --git a/arch/arm/plat-omap/include/plat/gpmc-smsc911x.h b/arch/arm/plat-omap/include/plat/gpmc-smsc911x.h
new file mode 100644
index 0000000..e5f3a48
--- /dev/null
+++ b/arch/arm/plat-omap/include/plat/gpmc-smsc911x.h
@@ -0,0 +1,35 @@
+/*
+ * arch/arm/plat-omap/include/mach/gpmc-smsc911x.h
+ *
+ * Copyright (C) 2009 Li-Pro.Net
+ * Stephan Linz <linz@li-pro.net>
+ *
+ * Modified from arch/arm/plat-omap/include/mach/gpmc-smc91x.h
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __ASM_ARCH_OMAP_GPMC_SMSC911X_H__
+
+struct omap_smsc911x_platform_data {
+ int cs;
+ int gpio_irq;
+ int gpio_reset;
+ u32 flags;
+};
+
+#if defined(CONFIG_SMSC911X) || \
+ defined(CONFIG_SMSC911X_MODULE)
+
+extern void gpmc_smsc911x_init(struct omap_smsc911x_platform_data *d);
+
+#else
+
+static inline void gpmc_smsc911x_init(struct omap_smsc911x_platform_data *d)
+{
+}
+
+#endif
+#endif
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 4/5] ARM: OMAP3LOGIC: Added SMSC Ethernet board support
[not found] <1285358338-3403-1-git-send-email-tim.nordell@logicpd.com>
` (3 preceding siblings ...)
2010-09-24 23:12 ` [PATCH v3 3/5] ARM: OMAP3: Add generic smsc911x support when connected to GPMC Tim Nordell
@ 2010-09-24 23:12 ` Tim Nordell
2010-09-24 23:12 ` [PATCH v3 5/5] ARM: OMAP3LOGIC: Adding low-level debug support Tim Nordell
5 siblings, 0 replies; 6+ messages in thread
From: Tim Nordell @ 2010-09-24 23:12 UTC (permalink / raw)
To: linux-arm-kernel
Enable SMSC911x Ethernet driver for LogicPD's OMAP
3530 LV SOM and OMAP 35x Torpedo board.
Signed-off-by: Tim Nordell <tim.nordell@logicpd.com>
---
arch/arm/mach-omap2/board-omap3logic.c | 65 ++++++++++++++++++++++++++++++++
1 files changed, 65 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index ec6d6f1..f013d62 100644
--- a/arch/arm/mach-omap2/board-omap3logic.c
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -38,6 +38,7 @@
#include <plat/mux.h>
#include <plat/board.h>
#include <plat/common.h>
+#include <plat/gpmc-smsc911x.h>
#include <plat/gpmc.h>
#include <plat/timer-gp.h>
#include <plat/sdrc.h>
@@ -141,6 +142,58 @@ static void __init board_mmc_init(void)
omap3logic_vmmc1_supply.dev = board_mmc_info[0].dev;
}
+static struct omap_smsc911x_platform_data __initdata board_smsc911x_data = {
+ .cs = OMAP3LOGIC_SMSC911X_CS,
+ .gpio_irq = -EINVAL,
+ .gpio_reset = -EINVAL,
+ .flags = IORESOURCE_IRQ_LOWLEVEL,
+};
+
+/* TODO/FIXME (comment by Peter Barada, LogicPD):
+ * Fix the PBIAS voltage for Torpedo MMC1 pins that
+ * are used for other needs (IRQs, etc). */
+static void omap3torpedo_fix_pbias_voltage(void)
+{
+ u16 control_pbias_offset = OMAP343X_CONTROL_PBIAS_LITE;
+ u32 reg;
+
+ if (machine_is_omap3_torpedo())
+ {
+ /* Set the bias for the pin */
+ reg = omap_ctrl_readl(control_pbias_offset);
+
+ reg &= ~OMAP343X_PBIASLITEPWRDNZ1;
+ omap_ctrl_writel(reg, control_pbias_offset);
+
+ /* 100ms delay required for PBIAS configuration */
+ msleep(100);
+
+ reg |= OMAP343X_PBIASLITEVMODE1;
+ reg |= OMAP343X_PBIASLITEPWRDNZ1;
+ omap_ctrl_writel(reg | 0x300, control_pbias_offset);
+ }
+}
+
+static inline void __init board_smsc911x_init(void)
+{
+ if (machine_is_omap3530_lv_som()) {
+ /* OMAP3530 LV SOM board */
+ board_smsc911x_data.gpio_irq =
+ OMAP3530_LV_SOM_SMSC911X_GPIO_IRQ;
+ omap_mux_init_signal("gpio_152", OMAP_PIN_INPUT);
+ } else if (machine_is_omap3_torpedo()) {
+ /* OMAP3 Torpedo board */
+ board_smsc911x_data.gpio_irq = OMAP3_TORPEDO_SMSC911X_GPIO_IRQ;
+ omap_mux_init_signal("gpio_129", OMAP_PIN_INPUT);
+ } else {
+ /* unsupported board */
+ printk(KERN_ERR "%s(): unknown machine type\n", __func__);
+ return;
+ }
+
+ gpmc_smsc911x_init(&board_smsc911x_data);
+}
+
static void __init omap3logic_init_irq(void)
{
omap2_init_common_hw(NULL, NULL);
@@ -148,11 +201,23 @@ static void __init omap3logic_init_irq(void)
omap_gpio_init();
}
+#ifdef CONFIG_OMAP_MUX
+static struct omap_board_mux board_mux[] __initdata = {
+ { .reg_offset = OMAP_MUX_TERMINATOR },
+};
+#else
+#define board_mux NULL
+#endif
+
static void __init omap3logic_init(void)
{
+ omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
+ omap3torpedo_fix_pbias_voltage();
omap3logic_i2c_init();
omap_serial_init();
board_mmc_init();
+ board_smsc911x_init();
+
/* Ensure SDRC pins are mux'd for self-refresh */
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 5/5] ARM: OMAP3LOGIC: Adding low-level debug support
[not found] <1285358338-3403-1-git-send-email-tim.nordell@logicpd.com>
` (4 preceding siblings ...)
2010-09-24 23:12 ` [PATCH v3 4/5] ARM: OMAP3LOGIC: Added SMSC Ethernet board support Tim Nordell
@ 2010-09-24 23:12 ` Tim Nordell
5 siblings, 0 replies; 6+ messages in thread
From: Tim Nordell @ 2010-09-24 23:12 UTC (permalink / raw)
To: linux-arm-kernel
Defined UART1 as the low-level debug port for both the
omap3530_lv_som board and the omap3_torpedo board.
Signed-off-by: Tim Nordell <tim.nordell@logicpd.com>
---
arch/arm/plat-omap/include/plat/uncompress.h | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/arch/arm/plat-omap/include/plat/uncompress.h b/arch/arm/plat-omap/include/plat/uncompress.h
index ddf723b..ff9f3a2 100644
--- a/arch/arm/plat-omap/include/plat/uncompress.h
+++ b/arch/arm/plat-omap/include/plat/uncompress.h
@@ -139,6 +139,8 @@ static inline void __arch_decomp_setup(unsigned long arch_id)
DEBUG_LL_OMAP2(1, omap3evm);
DEBUG_LL_OMAP3(1, omap_3430sdp);
DEBUG_LL_OMAP3(1, omap_3630sdp);
+ DEBUG_LL_OMAP3(1, omap3530_lv_som);
+ DEBUG_LL_OMAP3(1, omap3_torpedo);
/* omap3 based boards using UART3 */
DEBUG_LL_OMAP3(3, cm_t35);
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-09-24 23:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1285358338-3403-1-git-send-email-tim.nordell@logicpd.com>
2010-09-24 23:12 ` [PATCH v3 0/5] LogicPD minimal board support for LV_SOM and Torpedo Tim Nordell
2010-09-24 23:12 ` [PATCH v3 1/5] Adding LogicPD OMAP3 board support Tim Nordell
2010-09-24 23:12 ` [PATCH v3 2/5] ARM: OMAP3LOGIC: Adding SDMMC support Tim Nordell
2010-09-24 23:12 ` [PATCH v3 3/5] ARM: OMAP3: Add generic smsc911x support when connected to GPMC Tim Nordell
2010-09-24 23:12 ` [PATCH v3 4/5] ARM: OMAP3LOGIC: Added SMSC Ethernet board support Tim Nordell
2010-09-24 23:12 ` [PATCH v3 5/5] ARM: OMAP3LOGIC: Adding low-level debug support Tim Nordell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).