linux/drivers/mmc/host/dw_mmc-k3.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2013 Linaro Ltd.
 * Copyright (c) 2013 HiSilicon Limited.
 */

#include <linux/bitops.h>
#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/mfd/syscon.h>
#include <linux/mmc/host.h>
#include <linux/module.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>

#include "dw_mmc.h"
#include "dw_mmc-pltfm.h"

/*
 * hi6220 sd only support io voltage 1.8v and 3v
 * Also need config AO_SCTRL_SEL18 accordingly
 */
#define AO_SCTRL_SEL18
#define AO_SCTRL_CTRL3

#define DWMMC_SDIO_ID

#define SOC_SCTRL_SCPERCTRL5
#define SDCARD_IO_SEL18

#define SDCARD_RD_THRESHOLD

#define GENCLK_DIV

#define GPIO_CLK_ENABLE
#define GPIO_CLK_DIV_MASK
#define GPIO_USE_SAMPLE_DLY_MASK
#define UHS_REG_EXT_SAMPLE_PHASE_MASK
#define UHS_REG_EXT_SAMPLE_DRVPHASE_MASK
#define UHS_REG_EXT_SAMPLE_DLY_MASK

#define TIMING_MODE
#define TIMING_CFG_NUM

#define NUM_PHASES

#define ENABLE_SHIFT_MIN_SMPL
#define ENABLE_SHIFT_MAX_SMPL
#define USE_DLY_MIN_SMPL
#define USE_DLY_MAX_SMPL

struct k3_priv {};

static unsigned long dw_mci_hi6220_caps[] =;

struct hs_timing {};

static struct hs_timing hs_timing_cfg[TIMING_MODE][TIMING_CFG_NUM] =;

static void dw_mci_k3_set_ios(struct dw_mci *host, struct mmc_ios *ios)
{}

static const struct dw_mci_drv_data k3_drv_data =;

static int dw_mci_hi6220_parse_dt(struct dw_mci *host)
{}

static int dw_mci_hi6220_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios)
{}

static void dw_mci_hi6220_set_ios(struct dw_mci *host, struct mmc_ios *ios)
{}

static int dw_mci_hi6220_execute_tuning(struct dw_mci_slot *slot, u32 opcode)
{}

static const struct dw_mci_drv_data hi6220_data =;

static void dw_mci_hs_set_timing(struct dw_mci *host, int timing,
				     int smpl_phase)
{}

static int dw_mci_hi3660_init(struct dw_mci *host)
{}

static int dw_mci_set_sel18(struct dw_mci *host, bool set)
{}

static void dw_mci_hi3660_set_ios(struct dw_mci *host, struct mmc_ios *ios)
{}

static int dw_mci_get_best_clksmpl(unsigned int sample_flag)
{}

static int dw_mci_hi3660_execute_tuning(struct dw_mci_slot *slot, u32 opcode)
{}

static int dw_mci_hi3660_switch_voltage(struct mmc_host *mmc,
					struct mmc_ios *ios)
{}

static const struct dw_mci_drv_data hi3660_data =;

static const struct of_device_id dw_mci_k3_match[] =;
MODULE_DEVICE_TABLE(of, dw_mci_k3_match);

static int dw_mci_k3_probe(struct platform_device *pdev)
{}

static const struct dev_pm_ops dw_mci_k3_dev_pm_ops =;

static struct platform_driver dw_mci_k3_pltfm_driver =;

module_platform_driver();

MODULE_DESCRIPTION();
MODULE_LICENSE();
MODULE_ALIAS();