ANDROID: GKI: drivers: of: Add APIs to find DDR device rank, HBB
Add APIs to find the DDR device rank and Highest
Bank Bit (HBB) information from their respective
memory nodes.
Bug: 153905290
Test: compile
Change-Id: Iae94efc681daf2cf0a531dceb8d2acdcf3484388
Signed-off-by: Kaushal Kumar <kaushalk@codeaurora.org>
(cherry picked from commit 789ad9a7a8
)
Signed-off-by: Will McVicker <willmcvicker@google.com>
This commit is contained in:
parent
e941a5081c
commit
643e14cfa2
2 changed files with 65 additions and 0 deletions
|
@ -80,6 +80,69 @@ void of_fdt_limit_memory(int limit)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* of_fdt_get_ddrhbb - Return the highest bank bit of ddr on the current device
|
||||
*
|
||||
* On match, returns a non-zero positive value which matches the highest bank
|
||||
* bit.
|
||||
* Otherwise returns -ENOENT.
|
||||
*/
|
||||
int of_fdt_get_ddrhbb(int channel, int rank)
|
||||
{
|
||||
int memory;
|
||||
int len;
|
||||
int ret;
|
||||
/* Single spaces reserved for channel(0-9), rank(0-9) */
|
||||
char pname[] = "ddr_device_hbb_ch _rank ";
|
||||
fdt32_t *prop = NULL;
|
||||
|
||||
memory = fdt_path_offset(initial_boot_params, "/memory");
|
||||
if (memory > 0) {
|
||||
snprintf(pname, sizeof(pname),
|
||||
"ddr_device_hbb_ch%d_rank%d", channel, rank);
|
||||
prop = fdt_getprop_w(initial_boot_params, memory,
|
||||
pname, &len);
|
||||
}
|
||||
|
||||
if (!prop || len != sizeof(u32))
|
||||
return -ENOENT;
|
||||
|
||||
ret = fdt32_to_cpu(*prop);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* of_fdt_get_ddrrank - Return the rank of ddr on the current device
|
||||
*
|
||||
* On match, returns a non-zero positive value which matches the ddr rank.
|
||||
* Otherwise returns -ENOENT.
|
||||
*/
|
||||
int of_fdt_get_ddrrank(int channel)
|
||||
{
|
||||
int memory;
|
||||
int len;
|
||||
int ret;
|
||||
/* Single space reserved for channel(0-9) */
|
||||
char pname[] = "ddr_device_rank_ch ";
|
||||
fdt32_t *prop = NULL;
|
||||
|
||||
memory = fdt_path_offset(initial_boot_params, "/memory");
|
||||
if (memory > 0) {
|
||||
snprintf(pname, sizeof(pname),
|
||||
"ddr_device_rank_ch%d", channel);
|
||||
prop = fdt_getprop_w(initial_boot_params, memory,
|
||||
pname, &len);
|
||||
}
|
||||
|
||||
if (!prop || len != sizeof(u32))
|
||||
return -ENOENT;
|
||||
|
||||
ret = fdt32_to_cpu(*prop);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* of_fdt_get_ddrtype - Return the type of ddr (4/5) on the current device
|
||||
*
|
||||
|
|
|
@ -48,6 +48,8 @@ extern char __dtb_end[];
|
|||
extern u64 of_flat_dt_translate_address(unsigned long node);
|
||||
extern void of_fdt_limit_memory(int limit);
|
||||
extern int of_fdt_get_ddrtype(void);
|
||||
extern int of_fdt_get_ddrrank(int channel);
|
||||
extern int of_fdt_get_ddrhbb(int channel, int rank);
|
||||
#endif /* CONFIG_OF_FLATTREE */
|
||||
|
||||
#ifdef CONFIG_OF_EARLY_FLATTREE
|
||||
|
|
Loading…
Reference in a new issue