From patchwork Thu Nov 21 23:57:29 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tony Lindgren X-Patchwork-Id: 3220851 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 1BDA19F461 for ; Thu, 21 Nov 2013 23:58:09 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2236E20726 for ; Thu, 21 Nov 2013 23:58:08 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F261320725 for ; Thu, 21 Nov 2013 23:58:06 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1Vje8I-0007Ke-W6; Thu, 21 Nov 2013 23:58:03 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Vje8G-0001kd-PM; Thu, 21 Nov 2013 23:58:00 +0000 Received: from mho-03-ewr.mailhop.org ([204.13.248.66] helo=mho-01-ewr.mailhop.org) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1Vje8E-0001k0-7Q for linux-arm-kernel@lists.infradead.org; Thu, 21 Nov 2013 23:57:59 +0000 Received: from c-50-131-214-131.hsd1.ca.comcast.net ([50.131.214.131] helo=localhost.localdomain) by mho-01-ewr.mailhop.org with esmtpa (Exim 4.72) (envelope-from ) id 1Vje7o-0008mF-SB; Thu, 21 Nov 2013 23:57:33 +0000 Received: from Mutt by mutt-smtp-wrapper.pl 1.2 (www.zdo.com/articles/mutt-smtp-wrapper.shtml) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 50.131.214.131 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX1/6K/AumrdZswmtYf9VxJLM Date: Thu, 21 Nov 2013 15:57:29 -0800 From: Tony Lindgren To: linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org, devicetree@vger.kernel.org, Pavel Machek , Aaro Koskinen Subject: Re: [PATCH 3/3] ARM: OMAP2+: Fix eMMC on n900 with device tree Message-ID: <20131121235729.GD10023@atomide.com> References: <1385059866-10646-1-git-send-email-tony@atomide.com> <1385059866-10646-4-git-send-email-tony@atomide.com> <20131121231751.GA9772@earth.universe> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20131121231751.GA9772@earth.universe> User-Agent: Mutt/1.5.20 (2009-06-14) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20131121_185758_287596_7B9FBD47 X-CRM114-Status: GOOD ( 35.27 ) X-Spam-Score: -1.9 (-) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP * Sebastian Reichel [131121 15:18]: > Hi Tony, > > On Thu, Nov 21, 2013 at 10:51:06AM -0800, Tony Lindgren wrote: > > Looks like we need to configure the regulators and use the pdata > > quirk to make eMMC work with device tree. > > > > It seems that mostly vmmc2 is used, and only some earlier revisions > > like the macro board used vaux3. > > > > Note that we can add support for the macro board later as needed > > by including the common n900 .dts file and configuring the vaux3 > > instead of vmmc2, and adding support for the smc91x Ethernet. > > > > --- > > > > Can you guys please test this on production n900 devices? > > > > I've tested it with my old macro board where I had to patch in vaux3 > > instead of vmmc2. I think there's some confusion in the legacy code > > comments, or else I'm confused. In any case, vaux3 works for the macro > > board, and I suspect that the production versions have vmmc2. > > > > If this does not work and vaux3 as regulator works, please also dump > > out the system_rev from your board. > > The good news is, that I got eMMC working :) The bad news is, that it > did not work with your patch :( I included my DTS nodes below. The > phone is HW/System revision 0x2101. Oh ok, I must have parsed the revisions wrong way then, and the macro I tried it on must be something newer than I thought :) > I have a second N900, which has HW revision 0x2204. I did not yet test > the patch with this phone, but legacy code also seems to use vaux3 for > it. Seems like we need two n900.dts files? Well let's use just vaux3 then with a comment to the .dts file if that works also on your 0x2204. It works on my 0x0010 too. I folded in your changes to the updated patch below. Care to reply with your Signed-off-by too assuming it works also on your 0x2204 n900? Regards, Tony From: Tony Lindgren Date: Wed, 20 Nov 2013 18:03:39 -0800 Subject: [PATCH] ARM: OMAP2+: Fix eMMC on n900 with device tree Looks like we need to configure the regulators and use the pdata quirk to make eMMC work with device tree. It seems that mostly vaux3 is used, and only some earlier revisions used vmmc2. This has been tested to work on devices where the system_rev passed by the bootloader has versions 0x0010 and 0x2101. Cc: devicetree@vger.kernel.org Cc: Pavel Machek Cc: Aaro Koskinen Cc: Sebastian Reichel [tony@atomide.com: updated with pinctrl changes and comments from Sebastian] Signed-off-by: Tony Lindgren Signed-off-by: Sebastian Reichel diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts index c4f20bf..c2c306d 100644 --- a/arch/arm/boot/dts/omap3-n900.dts +++ b/arch/arm/boot/dts/omap3-n900.dts @@ -125,6 +125,21 @@ >; }; + mmc2_pins: pinmux_mmc2_pins { + pinctrl-single,pins = < + 0x128 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk */ + 0x12a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd */ + 0x12c (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0 */ + 0x12e (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1 */ + 0x130 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2 */ + 0x132 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3 */ + 0x134 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat4 */ + 0x136 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat5 */ + 0x138 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat6 */ + 0x13a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat7 */ + >; + }; + display_pins: pinmux_display_pins { pinctrl-single,pins = < 0x0d4 (PIN_OUTPUT | MUX_MODE4) /* RX51_LCD_RESET_GPIO */ @@ -358,8 +373,14 @@ cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */ }; +/* most boards use vaux3, only some old versions use vmmc2 instead */ &mmc2 { - status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&mmc2_pins>; + vmmc-supply = <&vaux3>; + vmmc_aux-supply = <&vsim>; + bus-width = <8>; + non-removable; }; &mmc3 { diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c index 10c7145..39f020c 100644 --- a/arch/arm/mach-omap2/pdata-quirks.c +++ b/arch/arm/mach-omap2/pdata-quirks.c @@ -139,6 +139,7 @@ struct of_dev_auxdata omap_auxdata_lookup[] __initdata = { static struct pdata_init pdata_quirks[] __initdata = { #ifdef CONFIG_ARCH_OMAP3 + { "nokia,omap3-n900", hsmmc2_internal_input_clk, }, { "nokia,omap3-n9", hsmmc2_internal_input_clk, }, { "nokia,omap3-n950", hsmmc2_internal_input_clk, }, { "isee,omap3-igep0020", omap3_igep0020_legacy_init, },