]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blame - arch/arm/mach-omap1/board-sx1-mmc.c
Merge tag 'amd-drm-fixes-5.9-2020-08-20' of git://people.freedesktop.org/~agd5f/linux...
[mirror_ubuntu-hirsute-kernel.git] / arch / arm / mach-omap1 / board-sx1-mmc.c
CommitLineData
d2912cb1 1// SPDX-License-Identifier: GPL-2.0-only
087c5030
CEA
2/*
3 * linux/arch/arm/mach-omap1/board-sx1-mmc.c
4 *
5 * Copyright (C) 2007 Instituto Nokia de Tecnologia - INdT
6 * Author: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br>
7 *
8 * This code is based on linux/arch/arm/mach-omap1/board-h2-mmc.c, which is:
9 * Copyright (C) 2007 Instituto Nokia de Tecnologia - INdT
087c5030
CEA
10 */
11
2f8163ba 12#include <linux/gpio.h>
d8874665
TL
13#include <linux/platform_device.h>
14
a09e64fb 15#include <mach/hardware.h>
100f9638 16#include "board-sx1.h"
087c5030 17
68f39e74
TL
18#include "mmc.h"
19
fcebddb9 20#if IS_ENABLED(CONFIG_MMC_OMAP)
087c5030 21
d8874665 22static int mmc_set_power(struct device *dev, int slot, int power_on,
087c5030
CEA
23 int vdd)
24{
25 int err;
26 u8 dat = 0;
27
087c5030
CEA
28 err = sx1_i2c_read_byte(SOFIA_I2C_ADDR, SOFIA_POWER1_REG, &dat);
29 if (err < 0)
30 return err;
31
32 if (power_on)
33 dat |= SOFIA_MMC_POWER;
34 else
35 dat &= ~SOFIA_MMC_POWER;
36
37 return sx1_i2c_write_byte(SOFIA_I2C_ADDR, SOFIA_POWER1_REG, dat);
38}
39
d8874665
TL
40/* Cover switch is at OMAP_MPUIO(3) */
41static struct omap_mmc_platform_data mmc1_data = {
087c5030 42 .nr_slots = 1,
087c5030 43 .slots[0] = {
d8874665 44 .set_power = mmc_set_power,
2a12400e 45 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
087c5030
CEA
46 .name = "mmcblk",
47 },
48};
49
d8874665
TL
50static struct omap_mmc_platform_data *mmc_data[OMAP15XX_NR_MMC];
51
087c5030
CEA
52void __init sx1_mmc_init(void)
53{
d8874665
TL
54 mmc_data[0] = &mmc1_data;
55 omap1_init_mmc(mmc_data, OMAP15XX_NR_MMC);
087c5030
CEA
56}
57
58#else
59
60void __init sx1_mmc_init(void)
61{
62}
63
087c5030 64#endif