@ -8,9 +8,11 @@
# include <common.h>
# include <dm.h>
# include <dt-structs.h>
# include <fdtdec.h>
# include <libfdt.h>
# include <malloc.h>
# include <mapmem.h>
# include <sdhci.h>
# include <clk.h>
@ -19,6 +21,9 @@ DECLARE_GLOBAL_DATA_PTR;
# define EMMC_MIN_FREQ 400000
struct rockchip_sdhc_plat {
# if CONFIG_IS_ENABLED(OF_PLATDATA)
struct dtd_rockchip_rk3399_sdhci_5_1 dtplat ;
# endif
struct mmc_config cfg ;
struct mmc mmc ;
} ;
@ -37,10 +42,18 @@ static int arasan_sdhci_probe(struct udevice *dev)
int max_frequency , ret ;
struct clk clk ;
# if CONFIG_IS_ENABLED(OF_PLATDATA)
struct dtd_rockchip_rk3399_sdhci_5_1 * dtplat = & plat - > dtplat ;
host - > name = dev - > name ;
host - > ioaddr = map_sysmem ( dtplat - > reg [ 1 ] , dtplat - > reg [ 3 ] ) ;
max_frequency = dtplat - > max_frequency ;
ret = clk_get_by_index_platdata ( dev , 0 , dtplat - > clocks , & clk ) ;
# else
max_frequency = fdtdec_get_int ( gd - > fdt_blob , dev_of_offset ( dev ) ,
" max-frequency " , 0 ) ;
ret = clk_get_by_index ( dev , 0 , & clk ) ;
# endif
if ( ! ret ) {
ret = clk_set_rate ( & clk , max_frequency ) ;
if ( IS_ERR_VALUE ( ret ) )
@ -66,10 +79,12 @@ static int arasan_sdhci_probe(struct udevice *dev)
static int arasan_sdhci_ofdata_to_platdata ( struct udevice * dev )
{
# if !CONFIG_IS_ENABLED(OF_PLATDATA)
struct sdhci_host * host = dev_get_priv ( dev ) ;
host - > name = dev - > name ;
host - > ioaddr = dev_get_addr_ptr ( dev ) ;
# endif
return 0 ;
}
@ -87,7 +102,7 @@ static const struct udevice_id arasan_sdhci_ids[] = {
} ;
U_BOOT_DRIVER ( arasan_sdhci_drv ) = {
. name = " arasan_sdhci " ,
. name = " rockchip_rk3399_sdhci_5_1 " ,
. id = UCLASS_MMC ,
. of_match = arasan_sdhci_ids ,
. ofdata_to_platdata = arasan_sdhci_ofdata_to_platdata ,