X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fmmc.h;h=6bdcce881ddb5496ea99507d3cd8b6b08341ee43;hb=d2e5250be49fce4653689c41a5dc7e2d7e7ecf33;hp=1d377e0281f1e95cf698e5053a491960dd11d57f;hpb=63d4607e03e5f1f7ab9a18bc640e31f7d28874b4;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/mmc.h b/include/mmc.h index 1d377e0..6bdcce8 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -178,6 +178,7 @@ static inline bool mmc_is_tuning_cmd(uint cmdidx) #define MMC_STATUS_ERROR (1 << 19) #define MMC_STATE_PRG (7 << 9) +#define MMC_STATE_TRANS (4 << 9) #define MMC_VDD_165_195 0x00000080 /* VDD voltage 1.65 - 1.95 */ #define MMC_VDD_20_21 0x00000100 /* VDD voltage 2.0 ~ 2.1 */ @@ -389,7 +390,7 @@ struct mmc_uclass_priv { * will be available. * * @dev: Device - * @return associated mmc struct pointer if available, else NULL + * Return: associated mmc struct pointer if available, else NULL */ struct mmc *mmc_get_mmc_dev(const struct udevice *dev); @@ -538,18 +539,6 @@ struct dm_mmc_ops { #define mmc_get_ops(dev) ((struct dm_mmc_ops *)(dev)->driver->ops) -int dm_mmc_send_cmd(struct udevice *dev, struct mmc_cmd *cmd, - struct mmc_data *data); -int dm_mmc_set_ios(struct udevice *dev); -int dm_mmc_get_cd(struct udevice *dev); -int dm_mmc_get_wp(struct udevice *dev); -int dm_mmc_execute_tuning(struct udevice *dev, uint opcode); -int dm_mmc_wait_dat0(struct udevice *dev, int state, int timeout_us); -int dm_mmc_host_power_cycle(struct udevice *dev); -int dm_mmc_deferred_probe(struct udevice *dev); -int dm_mmc_reinit(struct udevice *dev); -int dm_mmc_get_b_max(struct udevice *dev, void *dst, lbaint_t blkcnt); - /* Transition functions for compatibility */ int mmc_set_ios(struct mmc *mmc); int mmc_getcd(struct mmc *mmc); @@ -591,6 +580,9 @@ struct mmc_config { uint f_max; uint b_max; unsigned char part_type; +#ifdef CONFIG_MMC_PWRSEQ + struct udevice *pwr_dev; +#endif }; struct sd_ssr { @@ -734,8 +726,16 @@ struct mmc { */ u32 quirks; u8 hs400_tuning; + + enum bus_mode user_speed_mode; /* input speed mode from user */ }; +#if CONFIG_IS_ENABLED(DM_MMC) +#define mmc_to_dev(_mmc) _mmc->dev +#else +#define mmc_to_dev(_mmc) NULL +#endif + struct mmc_hwpart_conf { struct { uint enh_start; /* in 512-byte sectors */ @@ -768,7 +768,7 @@ struct mmc *mmc_create(const struct mmc_config *cfg, void *priv); * @dev: MMC device to set up * @mmc: MMC struct * @cfg: MMC configuration - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int mmc_bind(struct udevice *dev, struct mmc *mmc, const struct mmc_config *cfg); @@ -778,36 +778,43 @@ void mmc_destroy(struct mmc *mmc); * mmc_unbind() - Unbind a MMC device's child block device * * @dev: MMC device - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int mmc_unbind(struct udevice *dev); int mmc_initialize(struct bd_info *bis); int mmc_init_device(int num); int mmc_init(struct mmc *mmc); int mmc_send_tuning(struct mmc *mmc, u32 opcode, int *cmd_error); - -#if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT) || \ - CONFIG_IS_ENABLED(MMC_HS200_SUPPORT) || \ - CONFIG_IS_ENABLED(MMC_HS400_SUPPORT) +int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data); int mmc_deinit(struct mmc *mmc); -#endif /** * mmc_of_parse() - Parse the device tree to get the capabilities of the host * * @dev: MMC device * @cfg: MMC configuration - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int mmc_of_parse(struct udevice *dev, struct mmc_config *cfg); +#ifdef CONFIG_MMC_PWRSEQ +/** + * mmc_pwrseq_get_power() - get a power device from device tree + * + * @dev: MMC device + * @cfg: MMC configuration + * Return: 0 if OK, -ve on error + */ +int mmc_pwrseq_get_power(struct udevice *dev, struct mmc_config *cfg); +#endif + int mmc_read(struct mmc *mmc, u64 src, uchar *dst, int size); /** * mmc_voltage_to_mv() - Convert a mmc_voltage in mV * * @voltage: The mmc_voltage to convert - * @return the value in mV if OK, -EINVAL on error (invalid mmc_voltage value) + * Return: the value in mV if OK, -EINVAL on error (invalid mmc_voltage value) */ int mmc_voltage_to_mv(enum mmc_voltage voltage); @@ -816,7 +823,7 @@ int mmc_voltage_to_mv(enum mmc_voltage voltage); * @mmc: MMC struct * @clock: bus frequency in Hz * @disable: flag indicating if the clock must on or off - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int mmc_set_clock(struct mmc *mmc, uint clock, bool disable); @@ -830,7 +837,7 @@ void print_mmc_devices(char separator); /** * get_mmc_num() - get the total MMC device number * - * @return 0 if there is no MMC device, else the number of devices + * Return: 0 if there is no MMC device, else the number of devices */ int get_mmc_num(void); int mmc_switch_part(struct mmc *mmc, unsigned int part_num); @@ -890,9 +897,10 @@ int mmc_set_bkops_enable(struct mmc *mmc); * the presence of SD/eMMC when no card detect logic is available. * * @param mmc Pointer to a MMC device struct - * @return 0 on success, <0 on error. + * @param quiet Be quiet, do not print error messages when card is not detected. + * Return: 0 on success, <0 on error. */ -int mmc_get_op_cond(struct mmc *mmc); +int mmc_get_op_cond(struct mmc *mmc, bool quiet); /** * Start device initialization and return immediately; it does not block on @@ -901,7 +909,7 @@ int mmc_get_op_cond(struct mmc *mmc); * initializatin. * * @param mmc Pointer to a MMC device struct - * @return 0 on success, <0 on error. + * Return: 0 on success, <0 on error. */ int mmc_start_init(struct mmc *mmc); @@ -948,7 +956,7 @@ int mmc_get_env_dev(void); * mmc_get_blk_desc() - Get the block descriptor for an MMC device * * @mmc: MMC device - * @return block device if found, else NULL + * Return: block device if found, else NULL */ struct blk_desc *mmc_get_blk_desc(struct mmc *mmc);