public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits
@ 2010-08-11 16:31 Jacob Tanenbaum
  2010-08-11 16:31 ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits Jacob Tanenbaum
                   ` (3 more replies)
  0 siblings, 4 replies; 17+ messages in thread
From: Jacob Tanenbaum @ 2010-08-11 16:31 UTC (permalink / raw)
  To: linux; +Cc: linux-omap, linux-kernel, rmk, tony, Jacob Tanenbaum

	Adding LogicPD OMAP3 board support

         Adding support for LogicPD's OMAP 3530 LV SOM and
         OMAP 35x Torpedo board.
	 
	 Tested against: linux-next 81e09f50c93edff607259cbe374a3006c9c5fa74
         Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>
---
 arch/arm/configs/omap3_defconfig       |    2 +
 arch/arm/mach-omap2/Kconfig            |    8 ++
 arch/arm/mach-omap2/Makefile           |    4 +
 arch/arm/mach-omap2/board-omap3logic.c |  184 ++++++++++++++++++++++++++++++++
 4 files changed, 198 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..42e7d4a 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -135,6 +135,14 @@ 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
+
+config MACH_OMAP3_TORPEDO
+	bool "OMAP3 Logic 35x Torpedo board"
+	depends on ARCH_OMAP3
+
 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..b449f9e
--- /dev/null
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -0,0 +1,184 @@
+/*
+ * 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>
+
+/* 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. */
+
+static struct omap_sdrc_params mt46h32m32lf6_sdrc_params[] = {
+	[0] = {
+		.rate	     = 166000000,
+		.actim_ctrla = 0xaa9db4c6,
+		.actim_ctrlb = 0x00011517,
+		.rfr_ctrl    = 0x0004e201,
+		.mr	     = 0x00000032,
+	},
+	[1] = {
+		.rate	     = 165941176,
+		.actim_ctrla = 0xaa9db4c6,
+		.actim_ctrlb = 0x00011517,
+		.rfr_ctrl    = 0x0004e201,
+		.mr	     = 0x00000032,
+	},
+	[2] = {
+		.rate	     = 83000000,
+		.actim_ctrla = 0x8a99b481,
+		.actim_ctrlb = 0x00011312,
+		.rfr_ctrl    = 0x0003de01,
+		.mr	     = 0x00000032,
+	},
+	[3] = {
+		.rate	     = 82970588,
+		.actim_ctrla = 0x8a99b481,
+		.actim_ctrlb = 0x00011312,
+		.rfr_ctrl    = 0x0003de01,
+		.mr	     = 0x00000032,
+	},
+	[4] = {
+		.rate	     = 0
+	},
+};
+
+static int omap3logic_twl_gpio_setup(struct device *dev,
+				unsigned gpio, unsigned ngpio)
+{
+	return 0;
+}
+
+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),
+	.setup		= omap3logic_twl_gpio_setup,
+};
+
+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 struct omap_board_config_kernel omap3logic_config[] __initdata = {
+};
+
+static void __init omap3logic_init_irq(void)
+{
+	omap_board_config = omap3logic_config;
+	omap_board_config_size = ARRAY_SIZE(omap3logic_config);
+	omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
+				mt46h32m32lf6_sdrc_params);
+	omap_init_irq();
+#ifdef CONFIG_OMAP_32K_TIMER
+	omap2_gp_clockevent_set_gptimer(12);
+#endif
+	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_cfg_reg(H16_34XX_SDRC_CKE0);
+	omap_cfg_reg(H17_34XX_SDRC_CKE1);
+	omap_cfg_reg(SDRC_CKE0);
+	omap_cfg_reg(SDRC_CKE1); */
+	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();
+}
+#ifdef CONFIG_MACH_OMAP3_TORPEDO
+	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
+#endif
+
+#ifdef CONFIG_MACH_OMAP3530_LV_SOM
+	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
+#endif
-- 
1.6.0.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 2/4]  Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits
  2010-08-11 16:31 [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits Jacob Tanenbaum
@ 2010-08-11 16:31 ` Jacob Tanenbaum
  2010-08-11 16:31   ` [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP3 TORPEDO and SOM " Jacob Tanenbaum
                     ` (2 more replies)
  2010-08-11 17:22 ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits Felipe Balbi
                   ` (2 subsequent siblings)
  3 siblings, 3 replies; 17+ messages in thread
From: Jacob Tanenbaum @ 2010-08-11 16:31 UTC (permalink / raw)
  To: linux; +Cc: linux-omap, linux-kernel, rmk, tony, Jacob Tanenbaum

    	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: linux-next 81e09f50c93edff607259cbe374a3006c9c5fa74
	Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>
---
 arch/arm/mach-omap2/board-omap3logic.c |   73 +++++++++++++++++++++++++++++--
 1 files changed, 68 insertions(+), 5 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index b449f9e..3358418 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>
@@ -41,6 +42,11 @@
 #include <plat/timer-gp.h>
 #include <plat/sdrc.h>
 
+#define OMAP3530_LV_SOM_MMC_GPIO_CD             110
+#define OMAP3530_LV_SOM_MMC_GPIO_WP             126
+#define OMAP3_TORPEDO_MMC_GPIO_CD               127
+#define OMAP3_TORPEDO_MMC_GPIO_WP               (-EINVAL)
+
 /* 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
@@ -81,6 +87,28 @@ static struct omap_sdrc_params mt46h32m32lf6_sdrc_params[] = {
 	},
 };
 
+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 int omap3logic_twl_gpio_setup(struct device *dev,
 				unsigned gpio, unsigned ngpio)
 {
@@ -104,6 +132,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[] = {
@@ -125,6 +154,44 @@ static int __init omap3logic_i2c_init(void)
 static struct omap_board_config_kernel omap3logic_config[] __initdata = {
 };
 
+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)
 {
 	omap_board_config = omap3logic_config;
@@ -144,12 +211,8 @@ 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_cfg_reg(H16_34XX_SDRC_CKE0);
-	omap_cfg_reg(H17_34XX_SDRC_CKE1);
-	omap_cfg_reg(SDRC_CKE0);
-	omap_cfg_reg(SDRC_CKE1); */
 	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
 	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
 }
-- 
1.6.0.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP3 TORPEDO and SOM dev kits
  2010-08-11 16:31 ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits Jacob Tanenbaum
@ 2010-08-11 16:31   ` Jacob Tanenbaum
  2010-08-11 16:31     ` [PATCH 4/4] enabling Ethernet " Jacob Tanenbaum
  2010-08-11 17:25   ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO " Felipe Balbi
  2010-08-11 18:07   ` Kevin Hilman
  2 siblings, 1 reply; 17+ messages in thread
From: Jacob Tanenbaum @ 2010-08-11 16:31 UTC (permalink / raw)
  To: linux; +Cc: linux-omap, linux-kernel, rmk, tony, 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.
	FIXED: pbias voltage for the Torpedo board

        Tested against: linux-next 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.6.0.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 4/4] enabling Ethernet support for LogicPD's OMAP3 TORPEDO and SOM dev kits
  2010-08-11 16:31   ` [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP3 TORPEDO and SOM " Jacob Tanenbaum
@ 2010-08-11 16:31     ` Jacob Tanenbaum
  0 siblings, 0 replies; 17+ messages in thread
From: Jacob Tanenbaum @ 2010-08-11 16:31 UTC (permalink / raw)
  To: linux; +Cc: linux-omap, linux-kernel, rmk, tony, Jacob Tanenbaum

                
                Enable SMSC911x Ethernet driver for LogicPD's OMAP 
		3530 LV SOM and OMAP 35x Torpedo board.

                Tested against: linux-next 81e09f50c93edff607259cbe374a3006c9c5fa74
		Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>
---
 arch/arm/mach-omap2/board-omap3logic.c |   90 +++++++++++++++++++++++++++++++-
 1 files changed, 89 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index 3358418..694bc27 100644
--- a/arch/arm/mach-omap2/board-omap3logic.c
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -38,14 +38,21 @@
 #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>
+#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_MMC_GPIO_WP               (-EINVAL)
+#define OMAP3_TORPEDO_SMSC911X_GPIO_IRQ		129
 
 /* Micron MT46H32M32LF-6 */
 /* FIXME: borrowed from sdram-micron-mt46h32m32lf-6.h because on LogicPD
@@ -190,6 +197,78 @@ 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)
@@ -204,14 +283,23 @@ static void __init omap3logic_init_irq(void)
 #endif
 	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.6.0.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits
  2010-08-11 16:31 [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits Jacob Tanenbaum
  2010-08-11 16:31 ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits Jacob Tanenbaum
@ 2010-08-11 17:22 ` Felipe Balbi
  2010-08-11 18:45   ` Jacob Tanenbaum
  2010-08-11 17:54 ` Sam Ravnborg
  2010-08-11 18:04 ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO " Kevin Hilman
  3 siblings, 1 reply; 17+ messages in thread
From: Felipe Balbi @ 2010-08-11 17:22 UTC (permalink / raw)
  To: ext Jacob Tanenbaum
  Cc: linux@arm.linux.org.uk, linux-omap@vger.kernel.org,
	linux-kernel@vger.kernel.org, rmk@arm.linux.org.uk,
	tony@atomide.com

Hi Jacob,

few style comments only

On Wed, Aug 11, 2010 at 06:31:34PM +0200, ext Jacob Tanenbaum wrote:
>
>	Adding LogicPD OMAP3 board support
>
>         Adding support for LogicPD's OMAP 3530 LV SOM and
>         OMAP 35x Torpedo board.
>	
>	 Tested against: linux-next 81e09f50c93edff607259cbe374a3006c9c5fa74
>         Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>

don't tab here. Please remove.

>+static int omap3logic_twl_gpio_setup(struct device *dev,
>+				unsigned gpio, unsigned ngpio)
>+{
>+	return 0;
>+}

no gpio setup ?? If you truly don't need, you don't have to add this 
stub function.

>+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),
>+	.setup		= omap3logic_twl_gpio_setup,
>+};
>+
>+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,

no USB on this board ?

>+static struct omap_board_config_kernel omap3logic_config[] __initdata = {
>+};

just don't assign anything ?

>+static void __init omap3logic_init_irq(void)
>+{
>+	omap_board_config = omap3logic_config;
>+	omap_board_config_size = ARRAY_SIZE(omap3logic_config);
>+	omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
>+				mt46h32m32lf6_sdrc_params);
>+	omap_init_irq();
>+#ifdef CONFIG_OMAP_32K_TIMER
>+	omap2_gp_clockevent_set_gptimer(12);
>+#endif
>+	omap_gpio_init();
>+}
>+
>+
>+

one blank line only

>+static void __init omap3logic_init(void)
>+{
>+	omap3logic_i2c_init();
>+	omap_serial_init();
>+
>+	/* Ensure SDRC pins are mux'd for self-refresh */
>+/*	omap_cfg_reg(H16_34XX_SDRC_CKE0);
>+	omap_cfg_reg(H17_34XX_SDRC_CKE1);
>+	omap_cfg_reg(SDRC_CKE0);
>+	omap_cfg_reg(SDRC_CKE1); */

remove this commented code if it's not used yet.

>+#ifdef CONFIG_MACH_OMAP3_TORPEDO

no need to wrap on this ifdef, please remove.

>+#ifdef CONFIG_MACH_OMAP3530_LV_SOM

neither this.

-- 
balbi

DefectiveByDesign.org

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/4]  Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits
  2010-08-11 16:31 ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits Jacob Tanenbaum
  2010-08-11 16:31   ` [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP3 TORPEDO and SOM " Jacob Tanenbaum
@ 2010-08-11 17:25   ` Felipe Balbi
  2010-08-11 18:47     ` Jacob Tanenbaum
  2010-08-11 18:07   ` Kevin Hilman
  2 siblings, 1 reply; 17+ messages in thread
From: Felipe Balbi @ 2010-08-11 17:25 UTC (permalink / raw)
  To: ext Jacob Tanenbaum
  Cc: linux@arm.linux.org.uk, linux-omap@vger.kernel.org,
	linux-kernel@vger.kernel.org, rmk@arm.linux.org.uk,
	tony@atomide.com

Hi,

On Wed, Aug 11, 2010 at 06:31:35PM +0200, ext Jacob Tanenbaum wrote:
>+#define OMAP3_TORPEDO_MMC_GPIO_WP               (-EINVAL)

this one isn't used anywhere, why adding it ?

>+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,
>+};
>+
>+
>+

one blank line only.

>+	} else {
>+		printk(KERN_ERR "%s(): unknown machine type\n", __func__);
>+	return;

indentation is wrong.

>+	omap2_hsmmc_init(board_mmc_info);
>+	/* link regulators to MMC adapters */
>+	omap3logic_vmmc1_supply.dev = board_mmc_info[0].dev;
>+}
>+
>+
>+

one blank line only.

> 	/* Ensure SDRC pins are mux'd for self-refresh */
>-/*	omap_cfg_reg(H16_34XX_SDRC_CKE0);
>-	omap_cfg_reg(H17_34XX_SDRC_CKE1);
>-	omap_cfg_reg(SDRC_CKE0);
>-	omap_cfg_reg(SDRC_CKE1); */

this shouldn't even be here in the first place. :-)

-- 
balbi

DefectiveByDesign.org

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits
  2010-08-11 16:31 [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits Jacob Tanenbaum
  2010-08-11 16:31 ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits Jacob Tanenbaum
  2010-08-11 17:22 ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits Felipe Balbi
@ 2010-08-11 17:54 ` Sam Ravnborg
  2010-08-11 18:53   ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM andTORPEDO " Jacob Tanenbaum
  2010-08-11 18:04 ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO " Kevin Hilman
  3 siblings, 1 reply; 17+ messages in thread
From: Sam Ravnborg @ 2010-08-11 17:54 UTC (permalink / raw)
  To: Jacob Tanenbaum; +Cc: linux, linux-omap, linux-kernel, rmk, tony

Hi Jacob.

Some quick comments.

	Sam

> 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

Are the omap3_defconfig supposed to enable all omap board variants?
Otherwise leave this change out.

> diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
> index b48bacf..42e7d4a 100644
> --- a/arch/arm/mach-omap2/Kconfig
> +++ b/arch/arm/mach-omap2/Kconfig
> @@ -135,6 +135,14 @@ 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
> +
> +config MACH_OMAP3_TORPEDO
> +	bool "OMAP3 Logic 35x Torpedo board"
> +	depends on ARCH_OMAP3
> +

Some help would be beneficial.
URL's to product descriptions etc could be included there.
You may alos consider telling people this is a TI deriviate etc.

> +static void __init omap3logic_init_irq(void)
> +{
> +	omap_board_config = omap3logic_config;
> +	omap_board_config_size = ARRAY_SIZE(omap3logic_config);
> +	omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
> +				mt46h32m32lf6_sdrc_params);
> +	omap_init_irq();
> +#ifdef CONFIG_OMAP_32K_TIMER
> +	omap2_gp_clockevent_set_gptimer(12);
> +#endif

Fix this on the called site. There is zero reason
to sprinkle all user of omap2_gp_clockevent_set_gptimer()
with ifdef/endif.

> +	/* Ensure SDRC pins are mux'd for self-refresh */
> +/*	omap_cfg_reg(H16_34XX_SDRC_CKE0);
> +	omap_cfg_reg(H17_34XX_SDRC_CKE1);
> +	omap_cfg_reg(SDRC_CKE0);
> +	omap_cfg_reg(SDRC_CKE1); */

Why do we have code that is not in use?


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits
  2010-08-11 16:31 [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits Jacob Tanenbaum
                   ` (2 preceding siblings ...)
  2010-08-11 17:54 ` Sam Ravnborg
@ 2010-08-11 18:04 ` Kevin Hilman
  2010-08-11 18:53   ` Jacob Tanenbaum
  3 siblings, 1 reply; 17+ messages in thread
From: Kevin Hilman @ 2010-08-11 18:04 UTC (permalink / raw)
  To: Jacob Tanenbaum; +Cc: linux, linux-omap, linux-kernel, rmk, tony

Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com> writes:

> 	Adding LogicPD OMAP3 board support
>
>          Adding support for LogicPD's OMAP 3530 LV SOM and
>          OMAP 35x Torpedo board.
> 	 
> 	 Tested against: linux-next 81e09f50c93edff607259cbe374a3006c9c5fa74
>          Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>

[...]

> +/* 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. */

Another option here instead of re-defining the struct is to includ the
original header and just change the values you need to.  That way
you can describe the reasons behind the values that are changing.

[...]

> +static struct omap_board_config_kernel omap3logic_config[] __initdata = {
> +};
> +
> +static void __init omap3logic_init_irq(void)
> +{
> +	omap_board_config = omap3logic_config;
> +	omap_board_config_size = ARRAY_SIZE(omap3logic_config);
> +	omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
> +				mt46h32m32lf6_sdrc_params);
> +	omap_init_irq();
> +#ifdef CONFIG_OMAP_32K_TIMER
> +	omap2_gp_clockevent_set_gptimer(12);
> +#endif

Why do you need GPT12?

Was this a copy-paste from Beagle?  Certain revs of beagle had this
limitation due to a board design problem, so unless you've inherited the
same board-design problem, you should be find with the default.


Kevin

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/4]  Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits
  2010-08-11 16:31 ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits Jacob Tanenbaum
  2010-08-11 16:31   ` [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP3 TORPEDO and SOM " Jacob Tanenbaum
  2010-08-11 17:25   ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO " Felipe Balbi
@ 2010-08-11 18:07   ` Kevin Hilman
  2 siblings, 0 replies; 17+ messages in thread
From: Kevin Hilman @ 2010-08-11 18:07 UTC (permalink / raw)
  To: Jacob Tanenbaum; +Cc: linux, linux-omap, linux-kernel, rmk, tony

Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com> writes:

>     	ARM: OMAP3LOGIC: Adding SDMMC support
>              Add low-level initialization for hsmmc controller for
>              LogicPD's OMAP 3530 LV SOM and OMAP 35x Torpedo board.

Also removes mux setup of SDRC pins which is not described here.

Kevin


^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits
  2010-08-11 17:22 ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits Felipe Balbi
@ 2010-08-11 18:45   ` Jacob Tanenbaum
  2010-08-11 18:49     ` Felipe Balbi
  0 siblings, 1 reply; 17+ messages in thread
From: Jacob Tanenbaum @ 2010-08-11 18:45 UTC (permalink / raw)
  To: felipe.balbi; +Cc: linux, linux-omap, linux-kernel, rmk, tony



-----Original Message-----
From: Felipe Balbi [mailto:felipe.balbi@nokia.com] 
Sent: Wednesday, August 11, 2010 1:23 PM
To: Jacob Tanenbaum
Cc: linux@arm.linux.org.uk; linux-omap@vger.kernel.org;
linux-kernel@vger.kernel.org; rmk@arm.linux.org.uk; tony@atomide.com
Subject: Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and
TORPEDO development kits

Hi Jacob,

few style comments only

On Wed, Aug 11, 2010 at 06:31:34PM +0200, ext Jacob Tanenbaum wrote:
>
>	Adding LogicPD OMAP3 board support
>
>         Adding support for LogicPD's OMAP 3530 LV SOM and
>         OMAP 35x Torpedo board.
>	
>	 Tested against: linux-next
81e09f50c93edff607259cbe374a3006c9c5fa74
>         Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>

don't tab here. Please remove.
Will fix

>+static int omap3logic_twl_gpio_setup(struct device *dev,
>+				unsigned gpio, unsigned ngpio)
>+{
>+	return 0;
>+}

no gpio setup ?? If you truly don't need, you don't have to add this 
stub function.
Will fix 

>+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),
>+	.setup		= omap3logic_twl_gpio_setup,
>+};
>+
>+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,

no USB on this board ?


there is USB support it will be added in later 

>+static struct omap_board_config_kernel omap3logic_config[] __initdata
= {
>+};

just don't assign anything ?


will fix

>+static void __init omap3logic_init_irq(void)
>+{
>+	omap_board_config = omap3logic_config;
>+	omap_board_config_size = ARRAY_SIZE(omap3logic_config);
>+	omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
>+				mt46h32m32lf6_sdrc_params);
>+	omap_init_irq();
>+#ifdef CONFIG_OMAP_32K_TIMER
>+	omap2_gp_clockevent_set_gptimer(12);
>+#endif
>+	omap_gpio_init();
>+}
>+
>+
>+

one blank line only

will fix

>+static void __init omap3logic_init(void)
>+{
>+	omap3logic_i2c_init();
>+	omap_serial_init();
>+
>+	/* Ensure SDRC pins are mux'd for self-refresh */
>+/*	omap_cfg_reg(H16_34XX_SDRC_CKE0);
>+	omap_cfg_reg(H17_34XX_SDRC_CKE1);
>+	omap_cfg_reg(SDRC_CKE0);
>+	omap_cfg_reg(SDRC_CKE1); */

remove this commented code if it's not used yet.

I made a mistake rebasing this code gets removed in patch 4, will fix 

>+#ifdef CONFIG_MACH_OMAP3_TORPEDO

no need to wrap on this ifdef, please remove.

>+#ifdef CONFIG_MACH_OMAP3530_LV_SOM

neither this.

No one else uses the ifdef but we were told from an earlier submission
we should because if both boards are disabled in the .config it would
inform the user on bootup 

-- 
balbi

DefectiveByDesign.org

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [PATCH 2/4]  Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits
  2010-08-11 17:25   ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO " Felipe Balbi
@ 2010-08-11 18:47     ` Jacob Tanenbaum
  0 siblings, 0 replies; 17+ messages in thread
From: Jacob Tanenbaum @ 2010-08-11 18:47 UTC (permalink / raw)
  To: felipe.balbi; +Cc: linux, linux-omap, linux-kernel, rmk, tony



-----Original Message-----
From: Felipe Balbi [mailto:felipe.balbi@nokia.com] 
Sent: Wednesday, August 11, 2010 1:26 PM
To: Jacob Tanenbaum
Cc: linux@arm.linux.org.uk; linux-omap@vger.kernel.org;
linux-kernel@vger.kernel.org; rmk@arm.linux.org.uk; tony@atomide.com
Subject: Re: [PATCH 2/4] Low-level initialization for hsmmc controller
on LogicPD's OMAP3 SOM and TORPEDO dev kits

Hi,

On Wed, Aug 11, 2010 at 06:31:35PM +0200, ext Jacob Tanenbaum wrote:
>+#define OMAP3_TORPEDO_MMC_GPIO_WP               (-EINVAL)

this one isn't used anywhere, why adding it ?

will fix

>+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,
>+};
>+
>+
>+

one blank line only.

Will fix 

>+	} else {
>+		printk(KERN_ERR "%s(): unknown machine type\n",
__func__);
>+	return;

indentation is wrong.

Will fix

>+	omap2_hsmmc_init(board_mmc_info);
>+	/* link regulators to MMC adapters */
>+	omap3logic_vmmc1_supply.dev = board_mmc_info[0].dev;
>+}
>+
>+
>+

one blank line only.

Will fix

> 	/* Ensure SDRC pins are mux'd for self-refresh */
>-/*	omap_cfg_reg(H16_34XX_SDRC_CKE0);
>-	omap_cfg_reg(H17_34XX_SDRC_CKE1);
>-	omap_cfg_reg(SDRC_CKE0);
>-	omap_cfg_reg(SDRC_CKE1); */

this shouldn't even be here in the first place. :-)

I removed this code and made a mistake in the rebase, it is removed in
patch 4 will fix

-- 
balbi

DefectiveByDesign.org

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits
  2010-08-11 18:45   ` Jacob Tanenbaum
@ 2010-08-11 18:49     ` Felipe Balbi
  2010-08-11 18:51       ` Jacob Tanenbaum
  0 siblings, 1 reply; 17+ messages in thread
From: Felipe Balbi @ 2010-08-11 18:49 UTC (permalink / raw)
  To: ext Jacob Tanenbaum
  Cc: Balbi Felipe (Nokia-MS/Helsinki), linux@arm.linux.org.uk,
	linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org,
	rmk@arm.linux.org.uk, tony@atomide.com

Hi,

On Wed, Aug 11, 2010 at 08:45:22PM +0200, ext Jacob Tanenbaum wrote:
>No one else uses the ifdef but we were told from an earlier submission
>we should because if both boards are disabled in the .config it would
>inform the user on bootup

What do you mean ? If these boards are't enabled on .config then this 
board-file won't even get added to the binary so those machine ids won't 
be available, right ?

-- 
balbi

DefectiveByDesign.org

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits
  2010-08-11 18:49     ` Felipe Balbi
@ 2010-08-11 18:51       ` Jacob Tanenbaum
  2010-08-11 18:54         ` Felipe Balbi
  0 siblings, 1 reply; 17+ messages in thread
From: Jacob Tanenbaum @ 2010-08-11 18:51 UTC (permalink / raw)
  To: felipe.balbi; +Cc: linux, linux-omap, linux-kernel, rmk, tony

Valid point we will remove the ifdefs

-----Original Message-----
From: Felipe Balbi [mailto:felipe.balbi@nokia.com] 
Sent: Wednesday, August 11, 2010 2:49 PM
To: Jacob Tanenbaum
Cc: Balbi Felipe (Nokia-MS/Helsinki); linux@arm.linux.org.uk;
linux-omap@vger.kernel.org; linux-kernel@vger.kernel.org;
rmk@arm.linux.org.uk; tony@atomide.com
Subject: Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and
TORPEDO development kits

Hi,

On Wed, Aug 11, 2010 at 08:45:22PM +0200, ext Jacob Tanenbaum wrote:
>No one else uses the ifdef but we were told from an earlier submission
>we should because if both boards are disabled in the .config it would
>inform the user on bootup

What do you mean ? If these boards are't enabled on .config then this 
board-file won't even get added to the binary so those machine ids won't

be available, right ?

-- 
balbi

DefectiveByDesign.org

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM andTORPEDO development kits
  2010-08-11 17:54 ` Sam Ravnborg
@ 2010-08-11 18:53   ` Jacob Tanenbaum
  2010-08-11 18:57     ` Sam Ravnborg
  0 siblings, 1 reply; 17+ messages in thread
From: Jacob Tanenbaum @ 2010-08-11 18:53 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: linux, linux-omap, linux-kernel, rmk, tony



-----Original Message-----
From: Sam Ravnborg [mailto:sam@ravnborg.org] 
Sent: Wednesday, August 11, 2010 1:55 PM
To: Jacob Tanenbaum
Cc: linux@arm.linux.org.uk; linux-omap@vger.kernel.org;
linux-kernel@vger.kernel.org; rmk@arm.linux.org.uk; tony@atomide.com
Subject: Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM
andTORPEDO development kits

Hi Jacob.

Some quick comments.

	Sam

> 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

Are the omap3_defconfig supposed to enable all omap board variants?
Otherwise leave this change out.

This is the default defconfig that enables most of the options
available, we are just adding our boards to the standard omap3_defconfig


> diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
> index b48bacf..42e7d4a 100644
> --- a/arch/arm/mach-omap2/Kconfig
> +++ b/arch/arm/mach-omap2/Kconfig
> @@ -135,6 +135,14 @@ 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
> +
> +config MACH_OMAP3_TORPEDO
> +	bool "OMAP3 Logic 35x Torpedo board"
> +	depends on ARCH_OMAP3
> +

Some help would be beneficial.
URL's to product descriptions etc could be included there.
You may alos consider telling people this is a TI deriviate etc.

Will fix

> +static void __init omap3logic_init_irq(void)
> +{
> +	omap_board_config = omap3logic_config;
> +	omap_board_config_size = ARRAY_SIZE(omap3logic_config);
> +	omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
> +				mt46h32m32lf6_sdrc_params);
> +	omap_init_irq();
> +#ifdef CONFIG_OMAP_32K_TIMER
> +	omap2_gp_clockevent_set_gptimer(12);
> +#endif

Fix this on the called site. There is zero reason
to sprinkle all user of omap2_gp_clockevent_set_gptimer()
with ifdef/endif.

Will fix

> +	/* Ensure SDRC pins are mux'd for self-refresh */
> +/*	omap_cfg_reg(H16_34XX_SDRC_CKE0);
> +	omap_cfg_reg(H17_34XX_SDRC_CKE1);
> +	omap_cfg_reg(SDRC_CKE0);
> +	omap_cfg_reg(SDRC_CKE1); */

Why do we have code that is not in use?

Taken out in the 4th patch made a mistake in rebasing 
Will fix

^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits
  2010-08-11 18:04 ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO " Kevin Hilman
@ 2010-08-11 18:53   ` Jacob Tanenbaum
  0 siblings, 0 replies; 17+ messages in thread
From: Jacob Tanenbaum @ 2010-08-11 18:53 UTC (permalink / raw)
  To: Kevin Hilman; +Cc: linux, linux-omap, linux-kernel, rmk, tony



-----Original Message-----
From: Kevin Hilman [mailto:khilman@deeprootsystems.com] 
Sent: Wednesday, August 11, 2010 2:05 PM
To: Jacob Tanenbaum
Cc: linux@arm.linux.org.uk; linux-omap@vger.kernel.org;
linux-kernel@vger.kernel.org; rmk@arm.linux.org.uk; tony@atomide.com
Subject: Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and
TORPEDO development kits

Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com> writes:

> 	Adding LogicPD OMAP3 board support
>
>          Adding support for LogicPD's OMAP 3530 LV SOM and
>          OMAP 35x Torpedo board.
> 	 
> 	 Tested against: linux-next
81e09f50c93edff607259cbe374a3006c9c5fa74
>          Signed-off-by: Jacob Tanenbaum <Jacob.Tanenbaum@logicpd.com>

[...]

> +/* 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. */

Another option here instead of re-defining the struct is to includ the
original header and just change the values you need to.  That way
you can describe the reasons behind the values that are changing.

Will fix

[...]

> +static struct omap_board_config_kernel omap3logic_config[] __initdata
= {
> +};
> +
> +static void __init omap3logic_init_irq(void)
> +{
> +	omap_board_config = omap3logic_config;
> +	omap_board_config_size = ARRAY_SIZE(omap3logic_config);
> +	omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
> +				mt46h32m32lf6_sdrc_params);
> +	omap_init_irq();
> +#ifdef CONFIG_OMAP_32K_TIMER
> +	omap2_gp_clockevent_set_gptimer(12);
> +#endif

Why do you need GPT12?

Was this a copy-paste from Beagle?  Certain revs of beagle had this
limitation due to a board design problem, so unless you've inherited the
same board-design problem, you should be find with the default.

Will test and fix


Kevin

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits
  2010-08-11 18:51       ` Jacob Tanenbaum
@ 2010-08-11 18:54         ` Felipe Balbi
  0 siblings, 0 replies; 17+ messages in thread
From: Felipe Balbi @ 2010-08-11 18:54 UTC (permalink / raw)
  To: ext Jacob Tanenbaum
  Cc: Balbi Felipe (Nokia-MS/Helsinki), linux@arm.linux.org.uk,
	linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org,
	rmk@arm.linux.org.uk, tony@atomide.com

On Wed, Aug 11, 2010 at 08:51:22PM +0200, ext Jacob Tanenbaum wrote:
>Valid point we will remove the ifdefs

please follow the Netiquette [1]. Send only plain text emails, with your 
replies right below the topic you're replying to. Don't top-post, it 
makes it really difficult to follow you're emails.

http://www.elinux.org/Netiquette

-- 
balbi

DefectiveByDesign.org

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/4] initial support for LogicPD's OMAP3 SOM andTORPEDO development kits
  2010-08-11 18:53   ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM andTORPEDO " Jacob Tanenbaum
@ 2010-08-11 18:57     ` Sam Ravnborg
  0 siblings, 0 replies; 17+ messages in thread
From: Sam Ravnborg @ 2010-08-11 18:57 UTC (permalink / raw)
  To: Jacob Tanenbaum; +Cc: linux, linux-omap, linux-kernel, rmk, tony

Hi Jacob.

Quick feedback!

You should teach your mailer better manners so it is
visible what you quote and what you answer.


> 
> > +static void __init omap3logic_init_irq(void)
> > +{
> > +	omap_board_config = omap3logic_config;
> > +	omap_board_config_size = ARRAY_SIZE(omap3logic_config);
> > +	omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
> > +				mt46h32m32lf6_sdrc_params);
> > +	omap_init_irq();
> > +#ifdef CONFIG_OMAP_32K_TIMER
> > +	omap2_gp_clockevent_set_gptimer(12);
> > +#endif
> 
> Fix this on the called site. There is zero reason
> to sprinkle all user of omap2_gp_clockevent_set_gptimer()
> with ifdef/endif.
> 
> Will fix

I noticed other users of omap2_gp_clockevent_set_gptimer()
does the same ifdef/endif.
You should take care of them when you have a proper way to do so.
Obviously in another patch.

	Sam

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2010-08-11 18:57 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-11 16:31 [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits Jacob Tanenbaum
2010-08-11 16:31 ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO dev kits Jacob Tanenbaum
2010-08-11 16:31   ` [PATCH 3/4] add generic smsc911x support for LogicPD's OMAP3 TORPEDO and SOM " Jacob Tanenbaum
2010-08-11 16:31     ` [PATCH 4/4] enabling Ethernet " Jacob Tanenbaum
2010-08-11 17:25   ` [PATCH 2/4] Low-level initialization for hsmmc controller on LogicPD's OMAP3 SOM and TORPEDO " Felipe Balbi
2010-08-11 18:47     ` Jacob Tanenbaum
2010-08-11 18:07   ` Kevin Hilman
2010-08-11 17:22 ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO development kits Felipe Balbi
2010-08-11 18:45   ` Jacob Tanenbaum
2010-08-11 18:49     ` Felipe Balbi
2010-08-11 18:51       ` Jacob Tanenbaum
2010-08-11 18:54         ` Felipe Balbi
2010-08-11 17:54 ` Sam Ravnborg
2010-08-11 18:53   ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM andTORPEDO " Jacob Tanenbaum
2010-08-11 18:57     ` Sam Ravnborg
2010-08-11 18:04 ` [PATCH 1/4] initial support for LogicPD's OMAP3 SOM and TORPEDO " Kevin Hilman
2010-08-11 18:53   ` Jacob Tanenbaum

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox