* [PATCH 1/4] initial support for LogicPD's OMAP3530LV SOM and OMAP35x Torpedo dev boards
@ 2010-08-25 3:53 Jacob Tanenbaum
2010-08-25 3:53 ` [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x " Jacob Tanenbaum
2010-09-02 13:20 ` [PATCH 1/4] initial support for LogicPD's OMAP3530LV SOM and OMAP35x " Russell King - ARM Linux
0 siblings, 2 replies; 7+ messages in thread
From: Jacob Tanenbaum @ 2010-08-25 3:53 UTC (permalink / raw)
To: linux; +Cc: linux-omap, linux-kernel, Jacob Tanenbaum
Adding LogicPD OMAP3 board support
Adding support for LogicPD's OMAP 3530 LV SOM and
OMAP 35x Torpedo board.
Tested against: 81e09f50c93edff607259cbe374a3006c9c5fa74
Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>
---
arch/arm/configs/omap3_defconfig | 2 +
arch/arm/mach-omap2/Kconfig | 16 +++
arch/arm/mach-omap2/Makefile | 4 +
arch/arm/mach-omap2/board-omap3logic.c | 174 ++++++++++++++++++++++++++++++++
4 files changed, 196 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/mach-omap2/board-omap3logic.c
diff --git a/arch/arm/configs/omap3_defconfig b/arch/arm/configs/omap3_defconfig
index 5db9a6b..f510dfd 100644
--- a/arch/arm/configs/omap3_defconfig
+++ b/arch/arm/configs/omap3_defconfig
@@ -37,6 +37,8 @@ CONFIG_MACH_OMAP_2430SDP=y
CONFIG_MACH_OMAP3_BEAGLE=y
CONFIG_MACH_DEVKIT8000=y
CONFIG_MACH_OMAP_LDP=y
+CONFIG_MACH_OMAP3530_LV_SOM=y
+CONFIG_MACH_OMAP3_TORPEDO=y
CONFIG_MACH_OVERO=y
CONFIG_MACH_OMAP3EVM=y
CONFIG_MACH_OMAP3517EVM=y
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index b48bacf..caa9147 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -135,6 +135,22 @@ 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
+ 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
+ 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 63b2d88..bc77d32 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -114,6 +114,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..30af7da
--- /dev/null
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -0,0 +1,174 @@
+/*
+ * 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>
+
+#include "sdram-micron-mt46h32m32lf-6.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
+
+/* Micron MT46H32M32LF-6 */
+/* FIXME: borrowed from sdram-micron-mt46h32m32lf-6.h because on LogicPD
+ * boards we can't use the default values -- why? I suspect the reason
+ * lies in the boot strap code. We correct this part if we have ported
+ * U-Boot and X-Load. */
+void init_sdram(struct omap_sdrc_params *sdrc_cs0){
+ sdrc_cs0[0].actim_ctrla = 0xaa9db4c6;
+ sdrc_cs0[0].actim_ctrlb = 0x00011517;
+ sdrc_cs0[0].rfr_ctrl = 0x0004e201;
+ sdrc_cs0[1].rate = 165941176;
+ sdrc_cs0[1].actim_ctrla = 0xaa9db4c6;
+ sdrc_cs0[1].actim_ctrlb = 0x00011217;
+ sdrc_cs0[1].rfr_ctrl = 0x0004dc01;
+ sdrc_cs0[2].actim_ctrla = 0x8a99b481;
+ sdrc_cs0[2].actim_ctrlb = 0x00011312;
+ sdrc_cs0[2].rfr_ctrl = 0x0003de017;
+ sdrc_cs0[3].actim_ctrla = 0x8a99b481;
+ sdrc_cs0[3].actim_ctrlb = 0x00011312;
+ sdrc_cs0[3].rfr_ctrl = 0x0003de01;
+}
+
+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)
+{
+ init_sdram(mt46h32m32lf6_sdrc_params);
+ omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
+ mt46h32m32lf6_sdrc_params);
+ 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);
+}
+
+static void __init omap3logic_map_io(void)
+{
+ omap2_set_globals_3xxx();
+ omap34xx_map_common_io();
+}
+
+MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
+ .phys_io = 0x48000000,
+ .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap3logic_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 = omap3logic_map_io,
+ .init_irq = omap3logic_init_irq,
+ .init_machine = omap3logic_init,
+ .timer = &omap_timer,
+MACHINE_END
--
1.7.2.1
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x Torpedo dev boards
2010-08-25 3:53 [PATCH 1/4] initial support for LogicPD's OMAP3530LV SOM and OMAP35x Torpedo dev boards Jacob Tanenbaum
@ 2010-08-25 3:53 ` Jacob Tanenbaum
2010-08-25 3:53 ` [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP 3530LV SOM and Torpedo 35x dev kits Jacob Tanenbaum
2010-09-02 13:22 ` [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x Torpedo dev boards Russell King - ARM Linux
2010-09-02 13:20 ` [PATCH 1/4] initial support for LogicPD's OMAP3530LV SOM and OMAP35x " Russell King - ARM Linux
1 sibling, 2 replies; 7+ messages in thread
From: Jacob Tanenbaum @ 2010-08-25 3:53 UTC (permalink / raw)
To: linux; +Cc: linux-omap, linux-kernel
From: jake <jake@Glados.(none)>
ARM: OMAP3LOGIC: Adding SDMMC support
Add low-level initialization for hsmmc controller for
LogicPD's OMAP 3530 LV SOM and OMAP 35x Torpedo board.
Tested against: 81e09f50c93edff607259cbe374a3006c9c5fa74
Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>
---
arch/arm/mach-omap2/board-omap3logic.c | 40 +++++++++++++++++++++++++++++++-
1 files changed, 39 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index 30af7da..bd83a83 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>
@@ -110,6 +111,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[] = {
@@ -128,6 +130,42 @@ 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)
+{
+ /* OMAP3530 LV SOM board */
+ if (machine_is_omap3530_lv_som()) {
+ 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);
+
+
+ /* OMAP3 Torpedo board */
+ } else if (machine_is_omap3_torpedo()) {
+ board_mmc_info[0].gpio_cd = OMAP3_TORPEDO_MMC_GPIO_CD;
+ omap_mux_init_signal("gpio_127", OMAP_PIN_OUTPUT);
+ /* unsupported board */
+ } else {
+ 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)
{
init_sdram(mt46h32m32lf6_sdrc_params);
@@ -141,7 +179,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.2.1
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP 3530LV SOM and Torpedo 35x dev kits
2010-08-25 3:53 ` [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x " Jacob Tanenbaum
@ 2010-08-25 3:53 ` Jacob Tanenbaum
2010-08-25 3:53 ` [PATCH 4/4] Enabling Ethernet support for LogicPD's OMAP 3530LV SOM and OMAP 35x Torpedo dev board Jacob Tanenbaum
2010-09-02 13:22 ` [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x Torpedo dev boards Russell King - ARM Linux
1 sibling, 1 reply; 7+ messages in thread
From: Jacob Tanenbaum @ 2010-08-25 3:53 UTC (permalink / raw)
To: linux; +Cc: linux-omap, linux-kernel, Jacob Tanenbaum
ARM: OMAP3: Add generic smsc911x support when connected to GPMC
Introduce of a generic way to setup smsc911x based Ethernet
controller connected to GPMC similar to gpmc-smc91x but without
timing setup.
Tested against: 81e09f50c93edff607259cbe374a3006c9c5fa74
Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>
---
arch/arm/mach-omap2/Makefile | 4 +
arch/arm/mach-omap2/gpmc-smsc911x.c | 113 +++++++++++++++++++++++
arch/arm/plat-omap/include/plat/gpmc-smsc911x.h | 35 +++++++
3 files changed, 152 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 bc77d32..668bfc7 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -177,3 +177,7 @@ 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.2.1
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 4/4] Enabling Ethernet support for LogicPD's OMAP 3530LV SOM and OMAP 35x Torpedo dev board
2010-08-25 3:53 ` [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP 3530LV SOM and Torpedo 35x dev kits Jacob Tanenbaum
@ 2010-08-25 3:53 ` Jacob Tanenbaum
2010-09-02 13:24 ` Russell King - ARM Linux
0 siblings, 1 reply; 7+ messages in thread
From: Jacob Tanenbaum @ 2010-08-25 3:53 UTC (permalink / raw)
To: linux; +Cc: linux-omap, linux-kernel, Jacob Tanenbaum
From: Jacob Tanenbaum <jacob.tanenbaum@logicpd.com>
ARM: OMAP3LOGIC: Ethernet driver and NFS added in defconfig
Enable SMSC911x Ethernet driver and allow root file system on NFS
for LogicPD's OMAP 3530 LV SOM and OMAP 35x Torpedo board.
Tested against: 81e09f50c93edff607259cbe374a3006c9c5fa74
Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>
---
arch/arm/mach-omap2/board-omap3logic.c | 83 ++++++++++++++++++++++++++++++++
1 files changed, 83 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index bd83a83..42d6ffe 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>
@@ -166,6 +167,77 @@ 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 inline void __init omap3_torpedo_fix_pbias_voltage(void) */
+static void omap3torpedo_fix_pbias_voltage(void)
+{
+ u16 control_pbias_offset = OMAP343X_CONTROL_PBIAS_LITE;
+ static int pbias_fixed = -1;
+ u32 reg;
+
+ if (!pbias_fixed) {
+ /* 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);
+
+ pbias_fixed = 1;
+ }
+}
+
+static inline void __init board_smsc911x_init(void)
+{
+ /* OMAP3530 LV SOM board */
+ if (machine_is_omap3530_lv_som()) {
+ board_smsc911x_data.gpio_irq =
+ OMAP3530_LV_SOM_SMSC911X_GPIO_IRQ;
+ /* board_smsc911x_data.gpio_reset
+ driven by SYS_nRESWARM, no GPIO */
+ /* omap_cfg_reg(AE1_34XX_GPIO152_UP); */
+ omap_mux_init_signal("gpio_152", OMAP_PIN_INPUT);
+
+/* omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);*/
+
+ /* OMAP3 Torpedo board */
+ } else if (machine_is_omap3_torpedo()) {
+ board_smsc911x_data.gpio_irq = OMAP3_TORPEDO_SMSC911X_GPIO_IRQ;
+ /* board_smsc911x_data.gpio_reset driven
+ by SYS_nRESWARM, no GPIO */
+ /*omap_cfg_reg(AE1_34XX_GPIO152_UP);*/
+ omap_mux_init_signal("gpio_129", OMAP_PIN_INPUT);
+ /* TODO/FIXME (comment by Peter Barada, LogicPD):
+ * On Torpedo, LAN9221 IRQ is an MMC1_DATA7 pin
+ * and IRQ1760 IRQ is MMC1_DATA4 pin - need
+ * to update PBIAS to get voltage to the device
+ * so the IRQs works correctly rather than float
+ * and cause an IRQ storm...
+ */
+ omap3torpedo_fix_pbias_voltage();
+ /* unsupported board */
+ } else {
+ printk(KERN_ERR "%s(): unknown machine type\n", __func__);
+ return;
+ }
+ gpmc_smsc911x_init(&board_smsc911x_data);
+}
+
static void __init omap3logic_init_irq(void)
{
init_sdram(mt46h32m32lf6_sdrc_params);
@@ -175,11 +247,22 @@ 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);
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.2.1
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 4/4] Enabling Ethernet support for LogicPD's OMAP 3530LV SOM and OMAP 35x Torpedo dev board
2010-08-25 3:53 ` [PATCH 4/4] Enabling Ethernet support for LogicPD's OMAP 3530LV SOM and OMAP 35x Torpedo dev board Jacob Tanenbaum
@ 2010-09-02 13:24 ` Russell King - ARM Linux
0 siblings, 0 replies; 7+ messages in thread
From: Russell King - ARM Linux @ 2010-09-02 13:24 UTC (permalink / raw)
To: Jacob Tanenbaum; +Cc: linux-omap, linux-kernel
On Tue, Aug 24, 2010 at 11:53:40PM -0400, Jacob Tanenbaum wrote:
> +static inline void __init board_smsc911x_init(void)
> +{
> + /* OMAP3530 LV SOM board */
> + if (machine_is_omap3530_lv_som()) {
> + board_smsc911x_data.gpio_irq =
> + OMAP3530_LV_SOM_SMSC911X_GPIO_IRQ;
> + /* board_smsc911x_data.gpio_reset
> + driven by SYS_nRESWARM, no GPIO */
> + /* omap_cfg_reg(AE1_34XX_GPIO152_UP); */
> + omap_mux_init_signal("gpio_152", OMAP_PIN_INPUT);
> +
> +/* omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);*/
> +
> + /* OMAP3 Torpedo board */
missing tab? Maybe it would make sense to put this after the line below?
> + } else if (machine_is_omap3_torpedo()) {
> + board_smsc911x_data.gpio_irq = OMAP3_TORPEDO_SMSC911X_GPIO_IRQ;
> + /* board_smsc911x_data.gpio_reset driven
> + by SYS_nRESWARM, no GPIO */
> + /*omap_cfg_reg(AE1_34XX_GPIO152_UP);*/
> + omap_mux_init_signal("gpio_129", OMAP_PIN_INPUT);
> + /* TODO/FIXME (comment by Peter Barada, LogicPD):
> + * On Torpedo, LAN9221 IRQ is an MMC1_DATA7 pin
> + * and IRQ1760 IRQ is MMC1_DATA4 pin - need
> + * to update PBIAS to get voltage to the device
> + * so the IRQs works correctly rather than float
> + * and cause an IRQ storm...
> + */
> + omap3torpedo_fix_pbias_voltage();
> + /* unsupported board */
missing tab? or maybe it should be moved after the line below.
> + } else {
> + printk(KERN_ERR "%s(): unknown machine type\n", __func__);
> + return;
> + }
> + gpmc_smsc911x_init(&board_smsc911x_data);
> +}
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x Torpedo dev boards
2010-08-25 3:53 ` [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x " Jacob Tanenbaum
2010-08-25 3:53 ` [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP 3530LV SOM and Torpedo 35x dev kits Jacob Tanenbaum
@ 2010-09-02 13:22 ` Russell King - ARM Linux
1 sibling, 0 replies; 7+ messages in thread
From: Russell King - ARM Linux @ 2010-09-02 13:22 UTC (permalink / raw)
To: Jacob Tanenbaum; +Cc: linux-omap, linux-kernel
On Tue, Aug 24, 2010 at 11:53:38PM -0400, Jacob Tanenbaum wrote:
> From: jake <jake@Glados.(none)>
Not a valid address... please fix.
>
> ARM: OMAP3LOGIC: Adding SDMMC support
> Add low-level initialization for hsmmc controller for
> LogicPD's OMAP 3530 LV SOM and OMAP 35x Torpedo board.
>
> Tested against: 81e09f50c93edff607259cbe374a3006c9c5fa74
> Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>
I'm confused why these comments are indented.
> +static void __init board_mmc_init(void)
> +{
> + /* OMAP3530 LV SOM board */
> + if (machine_is_omap3530_lv_som()) {
> + 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);
> +
> +
> + /* OMAP3 Torpedo board */
missing tab?
> + } else if (machine_is_omap3_torpedo()) {
> + board_mmc_info[0].gpio_cd = OMAP3_TORPEDO_MMC_GPIO_CD;
> + omap_mux_init_signal("gpio_127", OMAP_PIN_OUTPUT);
> + /* unsupported board */
missing tab?
> + } else {
> + printk(KERN_ERR "%s(): unknown machine type\n", __func__);
> + return;
missing tab?
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/4] initial support for LogicPD's OMAP3530LV SOM and OMAP35x Torpedo dev boards
2010-08-25 3:53 [PATCH 1/4] initial support for LogicPD's OMAP3530LV SOM and OMAP35x Torpedo dev boards Jacob Tanenbaum
2010-08-25 3:53 ` [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x " Jacob Tanenbaum
@ 2010-09-02 13:20 ` Russell King - ARM Linux
1 sibling, 0 replies; 7+ messages in thread
From: Russell King - ARM Linux @ 2010-09-02 13:20 UTC (permalink / raw)
To: Jacob Tanenbaum; +Cc: linux-omap, linux-kernel
On Tue, Aug 24, 2010 at 11:53:37PM -0400, Jacob Tanenbaum wrote:
> +/* Micron MT46H32M32LF-6 */
> +/* FIXME: borrowed from sdram-micron-mt46h32m32lf-6.h because on LogicPD
> + * boards we can't use the default values -- why? I suspect the reason
> + * lies in the boot strap code. We correct this part if we have ported
> + * U-Boot and X-Load. */
> +void init_sdram(struct omap_sdrc_params *sdrc_cs0){
static? { on the following line?
> + sdrc_cs0[0].actim_ctrla = 0xaa9db4c6;
> + sdrc_cs0[0].actim_ctrlb = 0x00011517;
> + sdrc_cs0[0].rfr_ctrl = 0x0004e201;
> + sdrc_cs0[1].rate = 165941176;
> + sdrc_cs0[1].actim_ctrla = 0xaa9db4c6;
> + sdrc_cs0[1].actim_ctrlb = 0x00011217;
> + sdrc_cs0[1].rfr_ctrl = 0x0004dc01;
> + sdrc_cs0[2].actim_ctrla = 0x8a99b481;
> + sdrc_cs0[2].actim_ctrlb = 0x00011312;
> + sdrc_cs0[2].rfr_ctrl = 0x0003de017;
36-bit hex numbers?
> + sdrc_cs0[3].actim_ctrla = 0x8a99b481;
> + sdrc_cs0[3].actim_ctrlb = 0x00011312;
> + sdrc_cs0[3].rfr_ctrl = 0x0003de01;
> +}
> +
> +static struct regulator_consumer_supply omap3logic_vmmc1_supply = {
> + .supply = "vmmc",
Any reason for the additional tabs?
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2010-09-02 13:24 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-25 3:53 [PATCH 1/4] initial support for LogicPD's OMAP3530LV SOM and OMAP35x Torpedo dev boards Jacob Tanenbaum
2010-08-25 3:53 ` [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x " Jacob Tanenbaum
2010-08-25 3:53 ` [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP 3530LV SOM and Torpedo 35x dev kits Jacob Tanenbaum
2010-08-25 3:53 ` [PATCH 4/4] Enabling Ethernet support for LogicPD's OMAP 3530LV SOM and OMAP 35x Torpedo dev board Jacob Tanenbaum
2010-09-02 13:24 ` Russell King - ARM Linux
2010-09-02 13:22 ` [PATCH 2/4] Low-level init of hsmmc controller for LogicPD's OMAP3530LV SOM and OMAP 35x Torpedo dev boards Russell King - ARM Linux
2010-09-02 13:20 ` [PATCH 1/4] initial support for LogicPD's OMAP3530LV SOM and OMAP35x " Russell King - ARM Linux
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®