mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
mmc: zynq: Add OF initialization support
Enable initialize sdhci from DTB. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
f88a6869a1
commit
345d3c0f01
2 changed files with 30 additions and 0 deletions
|
@ -19,5 +19,6 @@ extern void zynq_ddrc_init(void);
|
|||
|
||||
/* Driver extern functions */
|
||||
extern int zynq_sdhci_init(u32 regbase);
|
||||
extern int zynq_sdhci_of_init(const void *blob);
|
||||
|
||||
#endif /* _SYS_PROTO_H_ */
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <fdtdec.h>
|
||||
#include <libfdt.h>
|
||||
#include <malloc.h>
|
||||
#include <sdhci.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
|
@ -32,3 +34,30 @@ int zynq_sdhci_init(u32 regbase)
|
|||
add_sdhci(host, 52000000, 52000000 >> 9);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF_CONTROL
|
||||
int zynq_sdhci_of_init(const void *blob)
|
||||
{
|
||||
int offset = 0;
|
||||
u32 ret = 0;
|
||||
u32 reg;
|
||||
|
||||
debug("ZYNQ SDHCI: Initialization\n");
|
||||
|
||||
do {
|
||||
offset = fdt_node_offset_by_compatible(blob, offset,
|
||||
"arasan,sdhci-8.9a");
|
||||
if (offset != -1) {
|
||||
reg = fdtdec_get_addr(blob, offset, "reg");
|
||||
if (reg != FDT_ADDR_T_NONE) {
|
||||
ret |= zynq_sdhci_init(reg);
|
||||
} else {
|
||||
debug("ZYNQ SDHCI: Can't get base address\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
} while (offset != -1);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue