From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-fx0-f49.google.com ([209.85.161.49]) by canuck.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1QZ99P-0004et-BR for barebox@lists.infradead.org; Tue, 21 Jun 2011 22:10:28 +0000 Received: by fxm14 with SMTP id 14so342558fxm.36 for ; Tue, 21 Jun 2011 15:10:22 -0700 (PDT) From: Hubert Feurstein Date: Wed, 22 Jun 2011 00:10:16 +0200 Message-Id: <1308694216-6221-1-git-send-email-h.feurstein@gmail.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: barebox-bounces@lists.infradead.org Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [RFC PATCH] atmel-mci: fix initialization of 8bit-bus-width-mode for at91sam9g45 To: barebox@lists.infradead.org When the bus_width was set to 8, then only one data-line has been initialized. Signed-off-by: Hubert Feurstein Cc: Jean-Christophe PLAGNIOL-VILLARD Cc: Sascha Hauer --- It seems that nobody tried the 8bit mode yet, because this init-bug is present in the linux kernel as well. @Sascha: I assume the mci-host-driver should set both bits (MMC_MODE_4BIT and MMC_MODE_8BIT) when bus_width == 8 ??? arch/arm/mach-at91/at91sam9g45_devices.c | 4 ++-- drivers/mci/atmel_mci.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index dc01705..a474bd7 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c @@ -285,7 +285,7 @@ void at91_add_device_mci(short mmc_id, struct atmel_mci_platform_data *data) /* DAT0, maybe DAT1..DAT3 and maybe DAT4..DAT7 */ at91_set_A_periph(AT91_PIN_PA2, 1); - if (data->bus_width == 4) { + if (data->bus_width >= 4) { at91_set_A_periph(AT91_PIN_PA3, 1); at91_set_A_periph(AT91_PIN_PA4, 1); at91_set_A_periph(AT91_PIN_PA5, 1); @@ -310,7 +310,7 @@ void at91_add_device_mci(short mmc_id, struct atmel_mci_platform_data *data) /* DAT0, maybe DAT1..DAT3 and maybe DAT4..DAT7 */ at91_set_A_periph(AT91_PIN_PA23, 1); - if (data->bus_width == 4) { + if (data->bus_width >= 4) { at91_set_A_periph(AT91_PIN_PA24, 1); at91_set_A_periph(AT91_PIN_PA25, 1); at91_set_A_periph(AT91_PIN_PA26, 1); diff --git a/drivers/mci/atmel_mci.c b/drivers/mci/atmel_mci.c index 49a7851..d8bcf81 100644 --- a/drivers/mci/atmel_mci.c +++ b/drivers/mci/atmel_mci.c @@ -451,9 +451,9 @@ static int mci_probe(struct device_d *hw_dev) host->mci.init = mci_reset; host->mci.host_caps = pd->host_caps; - if (pd->bus_width == 4) + if (pd->bus_width >= 4) host->mci.host_caps |= MMC_MODE_4BIT; - else if (pd->bus_width == 8) + if (pd->bus_width == 8) host->mci.host_caps |= MMC_MODE_8BIT; host->base = (void __iomem *)hw_dev->map_base; -- 1.7.4.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox