lkml.org 
[lkml]   [2013]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subjectusing mmc2 on panda [was: Regression 3.11-rc1: omap4panda: no usb and consequently no ethernet]
On 07/19/2013 12:57 PM, Arend van Spriel wrote:
> On 07/19/2013 12:49 PM, Roger Quadros wrote:
>> On 07/19/2013 01:36 PM, Arend van Spriel wrote:
>>> On 07/18/2013 10:59 AM, Tony Lindgren wrote:
>>>> Then for the SDIO with device tree, take a look at the following
>>>> patches:
>>>>
>>>> [PATCH 0/3] WLAN support for omap4 when booted with devicetree
>>>> http://comments.gmane.org/gmane.linux.ports.arm.omap/97522#
>>>
>>> I have been looking at the pandaboard patch in the series above and I
>>> do have a question. Among other things the patch adds these dt entries.
>>>
>>> + 0x108 0x118 /* sdmmc5_clk.sdmmc5_clk INPUT_PULLUP |
>>> MODE0 */
>>> + 0x10a 0x118 /* sdmmc5_cmd.sdmmc5_cmd INPUT_PULLUP |
>>> MODE0 */
>>>
>>> If I look at the similar names in the deceased board-omap4panda.c:
>>>
>>> board-omap4panda.c: OMAP4_MUX(SDMMC5_CMD, OMAP_MUX_MODE0 |
>>> OMAP_PIN_INPUT_PULLUP),
>>> board-omap4panda.c: OMAP4_MUX(SDMMC5_CLK, OMAP_MUX_MODE0 |
>>> OMAP_PIN_INPUT_PULLUP),
>>>
>>> and in mux44xx.h:
>>>
>>> mux44xx.h:#define OMAP4_CTRL_MODULE_PAD_SDMMC5_CLK_OFFSET 0x0148
>>> mux44xx.h:#define OMAP4_CTRL_MODULE_PAD_SDMMC5_CMD_OFFSET 0x014a
>>>
>>> So how did 0x0148 get 0x0108 in DT and 0x014a get 0x010a. There is
>>> probably an explanation to it and it would help my understanding to
>>> know where this difference comes from. Hope you can help me out here.
>>>
>>
>> If you see omap4.dtsi, omap4_pmx_core starts at register address
>> 0x4a100040.
>>
>> So, you need to subtract 0x40 from the offsets defined in mux44xx.h
>> for pmx_core registers.
>
> That was what I was looking for. Thanks!

Hi Roger,

It has been a while, but I would like to pickup this thread. We have a
couple of pandaboards used as test setup. These have an SDIO adapter
hooked up to expansion connector A using MMC2. I have attached the patch
file (just ignore platform_data stuff). Now on one board it works, but
not for the other. I suspect a board issue so listing the two types that
we use:

PandaBoard rev A2 (dmesg: OMAP4430 ES2.1): works
PandaBoardES rev B1 (dmesg: OMAP4460 ES1.1): nope

Any hints for me.

Regards,
Arend

>> NOTE: omap4_pmx_wkup starts at a different address. Those are for
>> wakeup domain
>> control registers.
>
> Will keep that in mind.
>
> Regards,
> Arend
>

From 4a20162935b27e23ec7ddc818c9fe6b451c1a968 Mon Sep 17 00:00:00 2001
From: Arend van Spriel <arend@broadcom.com>
Date: Thu, 22 Aug 2013 12:29:23 +0200
Subject: [PATCH] brcmfmac: add device tree support for panda board

In linux mainline the pandaboard specific code moved to using
the device tree. Changing our internal patches to get platform
specific info from the device tree.

Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
arch/arm/boot/dts/omap4-panda-common.dtsi | 20 +++++++++++++++-
arch/arm/mach-omap2/devices.c | 36 ++++++++++++++++++++++++++++-
2 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/omap4-panda-common.dtsi b/arch/arm/boot/dts/omap4-panda-common.dtsi
index faa95b5..6ebeb8e 100644
--- a/arch/arm/boot/dts/omap4-panda-common.dtsi
+++ b/arch/arm/boot/dts/omap4-panda-common.dtsi
@@ -226,6 +226,22 @@
0xf0 (PIN_INPUT_PULLUP | MUX_MODE0) /* i2c4_sda */
>;
};
+ mmc2_brcmf_en: pinmux_mmc2_brcmf_en {
+ pinctrl-single,pins = <
+ 0x92 (PIN_OUTPUT | MUX_MODE3) /* brcmf-power */
+ >;
+ };
+ mmc2_pins: pinmux_mmc2_pins {
+ pinctrl-single,pins = <
+ 0x44 (MUX_MODE1 | PIN_INPUT_PULLUP) /* mmc2-cmd */
+ 0x42 (MUX_MODE1 | PIN_INPUT_PULLUP) /* mmc2-clk */
+ 0x00 (MUX_MODE1 | PIN_INPUT_PULLUP) /* mmc2-dat 0-3 */
+ 0x02 (MUX_MODE1 | PIN_INPUT_PULLUP)
+ 0x04 (MUX_MODE1 | PIN_INPUT_PULLUP)
+ 0x06 (MUX_MODE1 | PIN_INPUT_PULLUP)
+ 0x9a (MUX_MODE3 | PIN_INPUT_PULLDOWN) /* oob-irq */
+ >;
+ };
};

&omap4_pmx_wkup {
@@ -302,7 +318,9 @@
};

&mmc2 {
- status = "disabled";
+ vmmc-supply = <&vaux1>;
+ bus-width = <4>;
+ non-removable;
};

&mmc3 {
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 3c1279f..7a47535 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -21,7 +21,7 @@
#include <linux/platform_data/omap4-keypad.h>
#include <linux/wl12xx.h>
#include <linux/platform_data/mailbox-omap.h>
-
+#include <linux/platform_data/brcmfmac-sdio.h>
#include <asm/mach-types.h>
#include <asm/mach/map.h>

@@ -547,6 +547,39 @@ static inline void omap_init_wl12xx_of(void)
}
#endif

+#define GPIO_BRCMF_SDIO_PWR 134
+#define GPIO_BRCMF_SDIO_OOB 138
+static struct brcmfmac_sdio_platform_data brcmfmac_sdio_pdata;
+
+static struct platform_device brcmf_sdio_device = {
+ .name = BRCMFMAC_SDIO_PDATA_NAME,
+ .id = PLATFORM_DEVID_NONE,
+ .dev.platform_data = &brcmfmac_sdio_pdata
+};
+
+static struct gpio brcmf_sdio_gpios[] __initdata = {
+ { GPIO_BRCMF_SDIO_PWR, GPIOF_OUT_INIT_HIGH, "brcmf_sdio_pwr"},
+ { GPIO_BRCMF_SDIO_OOB, GPIOF_IN, "brcmf_sdio_oob"},
+};
+
+void __init omap_init_brcmfmac_of(void)
+{
+ if (!of_have_populated_dt())
+ return;
+
+ if (!of_machine_is_compatible("ti,omap4-panda"))
+ return;
+
+ if (gpio_request_array(brcmf_sdio_gpios,
+ ARRAY_SIZE(brcmf_sdio_gpios))) {
+ pr_err("%s: failed to request gpio array\n", __func__);
+ return;
+ }
+
+ brcmfmac_sdio_pdata.oob_irq_supported = false;
+ platform_device_register(&brcmf_sdio_device);
+}
+
/*-------------------------------------------------------------------------*/

static int __init omap2_init_devices(void)
@@ -573,6 +606,7 @@ static int __init omap2_init_devices(void)
} else {
/* These can be removed when bindings are done */
omap_init_wl12xx_of();
+ omap_init_brcmfmac_of();
}
omap_init_sti();
omap_init_rng();
--
1.7.10.4
\
 
 \ /
  Last update: 2013-10-01 10:21    [W:0.073 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site