~ubuntu-branches/ubuntu/saucy/linux-n900/saucy

« back to all changes in this revision

Viewing changes to drivers/mmc/host/sdhci-of-hlwd.c

  • Committer: Bazaar Package Importer
  • Author(s): Mathieu Poirier
  • Date: 2011-02-18 09:43:31 UTC
  • Revision ID: james.westby@ubuntu.com-20110218094331-eyubsja4f9k0yhmq
Tags: 2.6.35-1.1
Initial release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * drivers/mmc/host/sdhci-of-hlwd.c
 
3
 *
 
4
 * Nintendo Wii Secure Digital Host Controller Interface.
 
5
 * Copyright (C) 2009 The GameCube Linux Team
 
6
 * Copyright (C) 2009 Albert Herranz
 
7
 *
 
8
 * Based on sdhci-of-esdhc.c
 
9
 *
 
10
 * Copyright (c) 2007 Freescale Semiconductor, Inc.
 
11
 * Copyright (c) 2009 MontaVista Software, Inc.
 
12
 *
 
13
 * Authors: Xiaobo Xie <X.Xie@freescale.com>
 
14
 *          Anton Vorontsov <avorontsov@ru.mvista.com>
 
15
 *
 
16
 * This program is free software; you can redistribute it and/or modify
 
17
 * it under the terms of the GNU General Public License as published by
 
18
 * the Free Software Foundation; either version 2 of the License, or (at
 
19
 * your option) any later version.
 
20
 */
 
21
 
 
22
#include <linux/delay.h>
 
23
#include <linux/mmc/host.h>
 
24
#include "sdhci-of.h"
 
25
#include "sdhci.h"
 
26
 
 
27
/*
 
28
 * Ops and quirks for the Nintendo Wii SDHCI controllers.
 
29
 */
 
30
 
 
31
/*
 
32
 * We need a small delay after each write, or things go horribly wrong.
 
33
 */
 
34
#define SDHCI_HLWD_WRITE_DELAY  5 /* usecs */
 
35
 
 
36
static void sdhci_hlwd_writel(struct sdhci_host *host, u32 val, int reg)
 
37
{
 
38
        sdhci_be32bs_writel(host, val, reg);
 
39
        udelay(SDHCI_HLWD_WRITE_DELAY);
 
40
}
 
41
 
 
42
static void sdhci_hlwd_writew(struct sdhci_host *host, u16 val, int reg)
 
43
{
 
44
        sdhci_be32bs_writew(host, val, reg);
 
45
        udelay(SDHCI_HLWD_WRITE_DELAY);
 
46
}
 
47
 
 
48
static void sdhci_hlwd_writeb(struct sdhci_host *host, u8 val, int reg)
 
49
{
 
50
        sdhci_be32bs_writeb(host, val, reg);
 
51
        udelay(SDHCI_HLWD_WRITE_DELAY);
 
52
}
 
53
 
 
54
struct sdhci_of_data sdhci_hlwd = {
 
55
        .quirks = SDHCI_QUIRK_32BIT_DMA_ADDR |
 
56
                  SDHCI_QUIRK_32BIT_DMA_SIZE,
 
57
        .ops = {
 
58
                .read_l = sdhci_be32bs_readl,
 
59
                .read_w = sdhci_be32bs_readw,
 
60
                .read_b = sdhci_be32bs_readb,
 
61
                .write_l = sdhci_hlwd_writel,
 
62
                .write_w = sdhci_hlwd_writew,
 
63
                .write_b = sdhci_hlwd_writeb,
 
64
        },
 
65
};