@ -15,6 +15,20 @@
DECLARE_GLOBAL_DATA_PTR ;
DECLARE_GLOBAL_DATA_PTR ;
static int pci32_sdhci_get_cd ( struct sdhci_host * host )
{
/* PIC32 SDHCI CD errata:
* - set CD_TEST and clear CD_TEST_INS bit
*/
sdhci_writeb ( host , SDHCI_CTRL_CD_TEST , SDHCI_HOST_CONTROL ) ;
return 0 ;
}
static const struct sdhci_ops pic32_sdhci_ops = {
. get_cd = pci32_sdhci_get_cd ,
} ;
static int pic32_sdhci_probe ( struct udevice * dev )
static int pic32_sdhci_probe ( struct udevice * dev )
{
{
struct sdhci_host * host = dev_get_priv ( dev ) ;
struct sdhci_host * host = dev_get_priv ( dev ) ;
@ -33,6 +47,7 @@ static int pic32_sdhci_probe(struct udevice *dev)
host - > quirks = SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_NO_CD ;
host - > quirks = SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_NO_CD ;
host - > bus_width = fdtdec_get_int ( gd - > fdt_blob , dev - > of_offset ,
host - > bus_width = fdtdec_get_int ( gd - > fdt_blob , dev - > of_offset ,
" bus-width " , 4 ) ;
" bus-width " , 4 ) ;
host - > ops = & pic32_sdhci_ops ;
ret = fdtdec_get_int_array ( gd - > fdt_blob , dev - > of_offset ,
ret = fdtdec_get_int_array ( gd - > fdt_blob , dev - > of_offset ,
" clock-freq-min-max " , f_min_max , 2 ) ;
" clock-freq-min-max " , f_min_max , 2 ) ;