root/arch/arm/mach-omap1/board-h2-mmc.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. mmc_set_power
  2. mmc_late_init
  3. mmc_cleanup
  4. h2_mmc_init
  5. h2_mmc_init

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * linux/arch/arm/mach-omap1/board-h2-mmc.c
   4  *
   5  * Copyright (C) 2007 Instituto Nokia de Tecnologia - INdT
   6  * Author: Felipe Balbi <felipe.lima@indt.org.br>
   7  *
   8  * This code is based on linux/arch/arm/mach-omap2/board-n800-mmc.c, which is:
   9  * Copyright (C) 2006 Nokia Corporation
  10  */
  11 #include <linux/gpio.h>
  12 #include <linux/platform_device.h>
  13 #include <linux/platform_data/gpio-omap.h>
  14 #include <linux/mfd/tps65010.h>
  15 
  16 #include "board-h2.h"
  17 #include "mmc.h"
  18 
  19 #if IS_ENABLED(CONFIG_MMC_OMAP)
  20 
  21 static int mmc_set_power(struct device *dev, int slot, int power_on,
  22                                 int vdd)
  23 {
  24         gpio_set_value(H2_TPS_GPIO_MMC_PWR_EN, power_on);
  25         return 0;
  26 }
  27 
  28 static int mmc_late_init(struct device *dev)
  29 {
  30         int ret = gpio_request(H2_TPS_GPIO_MMC_PWR_EN, "MMC power");
  31         if (ret < 0)
  32                 return ret;
  33 
  34         gpio_direction_output(H2_TPS_GPIO_MMC_PWR_EN, 0);
  35 
  36         return ret;
  37 }
  38 
  39 static void mmc_cleanup(struct device *dev)
  40 {
  41         gpio_free(H2_TPS_GPIO_MMC_PWR_EN);
  42 }
  43 
  44 /*
  45  * H2 could use the following functions tested:
  46  * - mmc_get_cover_state that uses OMAP_MPUIO(1)
  47  * - mmc_get_wp that uses OMAP_MPUIO(3)
  48  */
  49 static struct omap_mmc_platform_data mmc1_data = {
  50         .nr_slots                       = 1,
  51         .init                           = mmc_late_init,
  52         .cleanup                        = mmc_cleanup,
  53         .slots[0]       = {
  54                 .set_power              = mmc_set_power,
  55                 .ocr_mask               = MMC_VDD_32_33 | MMC_VDD_33_34,
  56                 .name                   = "mmcblk",
  57         },
  58 };
  59 
  60 static struct omap_mmc_platform_data *mmc_data[OMAP16XX_NR_MMC];
  61 
  62 void __init h2_mmc_init(void)
  63 {
  64         mmc_data[0] = &mmc1_data;
  65         omap1_init_mmc(mmc_data, OMAP16XX_NR_MMC);
  66 }
  67 
  68 #else
  69 
  70 void __init h2_mmc_init(void)
  71 {
  72 }
  73 
  74 #endif

/* [<][>][^][v][top][bottom][index][help] */