linux/drivers/mfd/tmio_core.c
<<
>>
Prefs
   1/*
   2 * Copyright(c) 2009 Ian Molton <spyro@f2s.com>
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License version 2 as
   6 * published by the Free Software Foundation.
   7 */
   8
   9#include <linux/mfd/tmio.h>
  10
  11int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base)
  12{
  13        /* Enable the MMC/SD Control registers */
  14        sd_config_write16(cnf, shift, CNF_CMD, SDCREN);
  15        sd_config_write32(cnf, shift, CNF_CTL_BASE, base & 0xfffe);
  16
  17        /* Disable SD power during suspend */
  18        sd_config_write8(cnf, shift, CNF_PWR_CTL_3, 0x01);
  19
  20        /* The below is required but why? FIXME */
  21        sd_config_write8(cnf, shift, CNF_STOP_CLK_CTL, 0x1f);
  22
  23        /* Power down SD bus */
  24        sd_config_write8(cnf, shift, CNF_PWR_CTL_2, 0x00);
  25
  26        return 0;
  27}
  28EXPORT_SYMBOL(tmio_core_mmc_enable);
  29
  30int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base)
  31{
  32
  33        /* Enable the MMC/SD Control registers */
  34        sd_config_write16(cnf, shift, CNF_CMD, SDCREN);
  35        sd_config_write32(cnf, shift, CNF_CTL_BASE, base & 0xfffe);
  36
  37        return 0;
  38}
  39EXPORT_SYMBOL(tmio_core_mmc_resume);
  40
  41void tmio_core_mmc_pwr(void __iomem *cnf, int shift, int state)
  42{
  43        sd_config_write8(cnf, shift, CNF_PWR_CTL_2, state ? 0x02 : 0x00);
  44}
  45EXPORT_SYMBOL(tmio_core_mmc_pwr);
  46
  47void tmio_core_mmc_clk_div(void __iomem *cnf, int shift, int state)
  48{
  49        sd_config_write8(cnf, shift, CNF_SD_CLK_MODE, state ? 1 : 0);
  50}
  51EXPORT_SYMBOL(tmio_core_mmc_clk_div);
  52
  53