All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection
@ 2010-08-18 15:56 Robert Nelson
  2010-08-18 15:56 ` [PATCH v5 2/3] ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect Robert Nelson
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Robert Nelson @ 2010-08-18 15:56 UTC (permalink / raw)
  To: tony; +Cc: linux-omap, Robert Nelson, Jarkko Nikula

Due to the omap3530 ES3.0 Silicon being used on both the
B5/B6 and C1/2/3 Beagle we can't use the cpu_is_omap34xx() 
routines to differentiate the Beagle Boards.

However gpio pins 171,172,173 where setup for this prupose, so 
lets use them.

Changes:
for older U-Boot's, use omap_mux_init_gpio()
keep Beagle Rev in board-omap3beagle.c
gpio_free on gpio request failure

Tested on Beagle Revisions: B5, C2, C4, and xMA

Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Cc: Jarkko Nikula <jhnikula@gmail.com>
---
 arch/arm/mach-omap2/board-omap3beagle.c |   90 +++++++++++++++++++++++++++++++
 1 files changed, 90 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 87969c7..62d69a9 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -50,6 +50,95 @@
 
 #define NAND_BLOCK_SIZE		SZ_128K
 
+/*
+ * OMAP3 Beagle revision
+ * Run time detection of Beagle revision is done by reading GPIO.
+ * GPIO ID -
+ *	AXBX	= GPIO173, GPIO172, GPIO171: 1 1 1
+ *	C1_3	= GPIO173, GPIO172, GPIO171: 1 1 0
+ *	C4	= GPIO173, GPIO172, GPIO171: 1 0 1
+ *	XM	= GPIO173, GPIO172, GPIO171: 0 0 0
+ */
+enum {
+	OMAP3BEAGLE_BOARD_UNKN = 0,
+	OMAP3BEAGLE_BOARD_AXBX,
+	OMAP3BEAGLE_BOARD_C1_3,
+	OMAP3BEAGLE_BOARD_C4,
+	OMAP3BEAGLE_BOARD_XM,
+};
+
+static u8 omap3_beagle_version;
+
+static u8 omap3_beagle_get_rev(void)
+{
+	return omap3_beagle_version;
+}
+
+static void __init omap3_beagle_init_rev(void)
+{
+	int ret;
+	u16 beagle_rev = 0;
+
+	omap_mux_init_gpio(171, OMAP_PIN_INPUT_PULLUP);
+	omap_mux_init_gpio(172, OMAP_PIN_INPUT_PULLUP);
+	omap_mux_init_gpio(173, OMAP_PIN_INPUT_PULLUP);
+
+	ret = gpio_request(171, "rev_id_0");
+	if (ret < 0)
+		goto fail0;
+
+	ret = gpio_request(172, "rev_id_1");
+	if (ret < 0)
+		goto fail1;
+
+	ret = gpio_request(173, "rev_id_2");
+	if (ret < 0)
+		goto fail2;
+
+	gpio_direction_input(171);
+	gpio_direction_input(172);
+	gpio_direction_input(173);
+
+	beagle_rev = gpio_get_value(171) | (gpio_get_value(172) << 1)
+			| (gpio_get_value(173) << 2);
+
+	switch (beagle_rev) {
+	case 7:
+		printk(KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n");
+		omap3_beagle_version = OMAP3BEAGLE_BOARD_AXBX;
+		break;
+	case 6:
+		printk(KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n");
+		omap3_beagle_version = OMAP3BEAGLE_BOARD_C1_3;
+		break;
+	case 5:
+		printk(KERN_INFO "OMAP3 Beagle Rev: C4\n");
+		omap3_beagle_version = OMAP3BEAGLE_BOARD_C4;
+		break;
+	case 0:
+		printk(KERN_INFO "OMAP3 Beagle Rev: xM\n");
+		omap3_beagle_version = OMAP3BEAGLE_BOARD_XM;
+		break;
+	default:
+		printk(KERN_INFO "OMAP3 Beagle Rev: unknown %hd\n", beagle_rev);
+		omap3_beagle_version = OMAP3BEAGLE_BOARD_UNKN;
+	}
+
+	return;
+
+fail2:
+	gpio_free(173);
+fail1:
+	gpio_free(172);
+fail0:
+	gpio_free(171);
+
+	printk(KERN_ERR "Unable to get revision detection GPIO pins\n");
+	omap3_beagle_version = OMAP3BEAGLE_BOARD_UNKN;
+
+	return;
+}
+
 static struct mtd_partition omap3beagle_nand_partitions[] = {
 	/* All the partition sizes are listed in terms of NAND block size */
 	{
@@ -464,6 +553,7 @@ static struct omap_musb_board_data musb_board_data = {
 static void __init omap3_beagle_init(void)
 {
 	omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
+	omap3_beagle_init_rev();
 	omap3_beagle_i2c_init();
 	platform_add_devices(omap3_beagle_devices,
 			ARRAY_SIZE(omap3_beagle_devices));
-- 
1.7.0.4


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

* [PATCH v5 2/3] ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect
  2010-08-18 15:56 [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection Robert Nelson
@ 2010-08-18 15:56 ` Robert Nelson
  2010-08-18 15:56 ` [PATCH v5 3/3] ARM: OMAP: Beagle: no gpio_wp pin connection on xM Robert Nelson
  2010-08-19  6:53 ` [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection Jarkko Nikula
  2 siblings, 0 replies; 5+ messages in thread
From: Robert Nelson @ 2010-08-18 15:56 UTC (permalink / raw)
  To: tony; +Cc: linux-omap, Robert Nelson

system_rev comes from u-boot and is a constant 0x20, so 
Bx boards also fall in this 'if' and will get setup with the 
wrong gpio_wp pin. Switch to using the Beagle revision routine 
to correcly set pin 23 only for C1/2/3 and C4 Boards. Bx boards
will then use the correct default pin setting.

Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
---
 arch/arm/mach-omap2/board-omap3beagle.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 62d69a9..e9af4fd 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -274,7 +274,8 @@ static struct gpio_led gpio_leds[];
 static int beagle_twl_gpio_setup(struct device *dev,
 		unsigned gpio, unsigned ngpio)
 {
-	if (system_rev >= 0x20 && system_rev <= 0x34301000) {
+	if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) ||
+		(omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C4)) {
 		omap_mux_init_gpio(23, OMAP_PIN_INPUT);
 		mmc[0].gpio_wp = 23;
 	} else {
-- 
1.7.0.4


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

* [PATCH v5 3/3] ARM: OMAP: Beagle: no gpio_wp pin connection on xM
  2010-08-18 15:56 [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection Robert Nelson
  2010-08-18 15:56 ` [PATCH v5 2/3] ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect Robert Nelson
@ 2010-08-18 15:56 ` Robert Nelson
  2010-08-19  6:53 ` [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection Jarkko Nikula
  2 siblings, 0 replies; 5+ messages in thread
From: Robert Nelson @ 2010-08-18 15:56 UTC (permalink / raw)
  To: tony; +Cc: linux-omap, Robert Nelson

The omap3630 based BeagleBoard xM uses a MicroSD card slot with
no write protection.

Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
---
 arch/arm/mach-omap2/board-omap3beagle.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index e9af4fd..1f455c3 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -274,7 +274,9 @@ static struct gpio_led gpio_leds[];
 static int beagle_twl_gpio_setup(struct device *dev,
 		unsigned gpio, unsigned ngpio)
 {
-	if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) ||
+	if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
+		mmc[0].gpio_wp = -EINVAL;
+	} else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) ||
 		(omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C4)) {
 		omap_mux_init_gpio(23, OMAP_PIN_INPUT);
 		mmc[0].gpio_wp = 23;
-- 
1.7.0.4


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

* Re: [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection
  2010-08-18 15:56 [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection Robert Nelson
  2010-08-18 15:56 ` [PATCH v5 2/3] ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect Robert Nelson
  2010-08-18 15:56 ` [PATCH v5 3/3] ARM: OMAP: Beagle: no gpio_wp pin connection on xM Robert Nelson
@ 2010-08-19  6:53 ` Jarkko Nikula
  2010-08-20  2:33   ` Robert Nelson
  2 siblings, 1 reply; 5+ messages in thread
From: Jarkko Nikula @ 2010-08-19  6:53 UTC (permalink / raw)
  To: Robert Nelson; +Cc: tony, linux-omap

On Wed, 18 Aug 2010 10:56:51 -0500
Robert Nelson <robertcnelson@gmail.com> wrote:

> +	ret = gpio_request(171, "rev_id_0");
> +	if (ret < 0)
> +		goto fail0;
> +
> +	ret = gpio_request(172, "rev_id_1");
> +	if (ret < 0)
> +		goto fail1;
> +
> +	ret = gpio_request(173, "rev_id_2");
> +	if (ret < 0)
> +		goto fail2;
...
> +fail2:
> +	gpio_free(173);
> +fail1:
> +	gpio_free(172);
> +fail0:
> +	gpio_free(171);

This must be:

+fail2:
+	gpio_free(172);
+fail1:
+	gpio_free(171);
+fail0:

Otherwise the set looks good to me.


-- 
Jarkko

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

* Re: [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection
  2010-08-19  6:53 ` [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection Jarkko Nikula
@ 2010-08-20  2:33   ` Robert Nelson
  0 siblings, 0 replies; 5+ messages in thread
From: Robert Nelson @ 2010-08-20  2:33 UTC (permalink / raw)
  To: Jarkko Nikula; +Cc: tony, linux-omap

On Thu, Aug 19, 2010 at 1:53 AM, Jarkko Nikula <jhnikula@gmail.com> wrote:
> On Wed, 18 Aug 2010 10:56:51 -0500
> Robert Nelson <robertcnelson@gmail.com> wrote:
>
>> +     ret = gpio_request(171, "rev_id_0");
>> +     if (ret < 0)
>> +             goto fail0;
>> +
>> +     ret = gpio_request(172, "rev_id_1");
>> +     if (ret < 0)
>> +             goto fail1;
>> +
>> +     ret = gpio_request(173, "rev_id_2");
>> +     if (ret < 0)
>> +             goto fail2;
> ...
>> +fail2:
>> +     gpio_free(173);
>> +fail1:
>> +     gpio_free(172);
>> +fail0:
>> +     gpio_free(171);
>
> This must be:
>
> +fail2:
> +       gpio_free(172);
> +fail1:
> +       gpio_free(171);
> +fail0:
>
> Otherwise the set looks good to me.
>
>
> --
> Jarkko
>

Thanks Jarkko,

Yeah that one is obvious, will resubmit..

Regards,

-- 
Robert Nelson
http://www.rcn-ee.com/
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2010-08-20  2:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-18 15:56 [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection Robert Nelson
2010-08-18 15:56 ` [PATCH v5 2/3] ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect Robert Nelson
2010-08-18 15:56 ` [PATCH v5 3/3] ARM: OMAP: Beagle: no gpio_wp pin connection on xM Robert Nelson
2010-08-19  6:53 ` [PATCH v5 1/3] ARM: OMAP: Beagle: revision detection Jarkko Nikula
2010-08-20  2:33   ` Robert Nelson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.