cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

board-h2-mmc.c (1651B)


      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
     21static 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
     28static 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
     39static 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 */
     49static 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
     60static struct omap_mmc_platform_data *mmc_data[OMAP16XX_NR_MMC];
     61
     62void __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
     70void __init h2_mmc_init(void)
     71{
     72}
     73
     74#endif