1 /* 2 * Faraday FTSDC010 Secure Digital Memory Card Host Controller 3 * 4 * Copyright (C) 2011 Andes Technology Corporation 5 * Macpaul Lin, Andes Technology Corporation <macpaul@andestech.com> 6 * 7 * SPDX-License-Identifier: GPL-2.0+ 8 */ 9 #include <mmc.h> 10 11 #ifndef __FTSDC010_MCI_H 12 #define __FTSDC010_MCI_H 13 14 struct ftsdc010_chip { 15 void __iomem *regs; 16 uint32_t wprot; /* write protected (locked) */ 17 uint32_t rate; /* actual SD clock in Hz */ 18 uint32_t sclk; /* FTSDC010 source clock in Hz */ 19 uint32_t fifo; /* fifo depth in bytes */ 20 uint32_t acmd; 21 struct mmc_config cfg; /* mmc configuration */ 22 const char *name; 23 void *ioaddr; 24 unsigned int caps; 25 unsigned int version; 26 unsigned int clock; 27 unsigned int bus_hz; 28 unsigned int div; 29 int dev_index; 30 int dev_id; 31 int buswidth; 32 u32 fifoth_val; 33 struct mmc *mmc; 34 void *priv; 35 bool fifo_mode; 36 }; 37 38 39 #ifdef CONFIG_DM_MMC 40 /* Export the operations to drivers */ 41 int ftsdc010_probe(struct udevice *dev); 42 extern const struct dm_mmc_ops dm_ftsdc010_ops; 43 #endif 44 void ftsdc_setup_cfg(struct mmc_config *cfg, const char *name, int buswidth, 45 uint caps, u32 max_clk, u32 min_clk); 46 void set_bus_width(struct ftsdc010_mmc __iomem *regs, struct mmc_config *cfg); 47 48 #ifdef CONFIG_BLK 49 int ftsdc010_bind(struct udevice *dev, struct mmc *mmc, struct mmc_config *cfg); 50 #endif 51 52 53 #endif /* __FTSDC010_MCI_H */ 54