mirror of https://gitee.com/openkylin/linux.git
powerpc: Move of_drconf_cell struct to asm/drmem.h
Now that the powerpc code parses dynamic reconfiguration memory LMB information from the LMB array and not the device tree directly we can move the of_drconf_cell struct to drmem.h where it fits better. In addition, the struct is renamed to of_drconf_cell_v1 in anticipation of upcoming support for version 2 of the dynamic reconfiguration property and the members are typed as __be* values to reflect how they exist in the device tree. Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
6195a5001f
commit
2c77721552
|
@ -35,6 +35,25 @@ extern struct drmem_lmb_info *drmem_info;
|
|||
&drmem_info->lmbs[0], \
|
||||
&drmem_info->lmbs[drmem_info->n_lmbs - 1])
|
||||
|
||||
/*
|
||||
* The of_drconf_cell_v1 struct defines the layout of the LMB data
|
||||
* specified in the ibm,dynamic-memory device tree property.
|
||||
* The property itself is a 32-bit value specifying the number of
|
||||
* LMBs followed by an array of of_drconf_cell_v1 entries, one
|
||||
* per LMB.
|
||||
*/
|
||||
struct of_drconf_cell_v1 {
|
||||
__be64 base_addr;
|
||||
__be32 drc_index;
|
||||
__be32 reserved;
|
||||
__be32 aa_index;
|
||||
__be32 flags;
|
||||
};
|
||||
|
||||
#define DRCONF_MEM_ASSIGNED 0x00000008
|
||||
#define DRCONF_MEM_AI_INVALID 0x00000040
|
||||
#define DRCONF_MEM_RESERVED 0x00000080
|
||||
|
||||
static inline u32 drmem_lmb_size(void)
|
||||
{
|
||||
return drmem_info->lmb_size;
|
||||
|
|
|
@ -80,22 +80,6 @@ extern void of_instantiate_rtc(void);
|
|||
|
||||
extern int of_get_ibm_chip_id(struct device_node *np);
|
||||
|
||||
/* The of_drconf_cell struct defines the layout of the LMB array
|
||||
* specified in the device tree property
|
||||
* ibm,dynamic-reconfiguration-memory/ibm,dynamic-memory
|
||||
*/
|
||||
struct of_drconf_cell {
|
||||
u64 base_addr;
|
||||
u32 drc_index;
|
||||
u32 reserved;
|
||||
u32 aa_index;
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
#define DRCONF_MEM_ASSIGNED 0x00000008
|
||||
#define DRCONF_MEM_AI_INVALID 0x00000040
|
||||
#define DRCONF_MEM_RESERVED 0x00000080
|
||||
|
||||
/*
|
||||
* There are two methods for telling firmware what our capabilities are.
|
||||
* Newer machines have an "ibm,client-architecture-support" method on the
|
||||
|
|
|
@ -66,7 +66,7 @@ static int drmem_update_dt_v1(struct device_node *memory,
|
|||
struct property *prop)
|
||||
{
|
||||
struct property *new_prop;
|
||||
struct of_drconf_cell *dr_cell;
|
||||
struct of_drconf_cell_v1 *dr_cell;
|
||||
struct drmem_lmb *lmb;
|
||||
u32 *p;
|
||||
|
||||
|
@ -77,7 +77,7 @@ static int drmem_update_dt_v1(struct device_node *memory,
|
|||
p = new_prop->value;
|
||||
*p++ = cpu_to_be32(drmem_info->n_lmbs);
|
||||
|
||||
dr_cell = (struct of_drconf_cell *)p;
|
||||
dr_cell = (struct of_drconf_cell_v1 *)p;
|
||||
|
||||
for_each_drmem_lmb(lmb) {
|
||||
dr_cell->base_addr = cpu_to_be64(lmb->base_addr);
|
||||
|
|
|
@ -996,7 +996,7 @@ static int pseries_add_mem_node(struct device_node *np)
|
|||
|
||||
static int pseries_update_drconf_memory(struct of_reconfig_data *pr)
|
||||
{
|
||||
struct of_drconf_cell *new_drmem, *old_drmem;
|
||||
struct of_drconf_cell_v1 *new_drmem, *old_drmem;
|
||||
unsigned long memblock_size;
|
||||
u32 entries;
|
||||
__be32 *p;
|
||||
|
@ -1019,11 +1019,11 @@ static int pseries_update_drconf_memory(struct of_reconfig_data *pr)
|
|||
* of_drconf_cell's.
|
||||
*/
|
||||
entries = be32_to_cpu(*p++);
|
||||
old_drmem = (struct of_drconf_cell *)p;
|
||||
old_drmem = (struct of_drconf_cell_v1 *)p;
|
||||
|
||||
p = (__be32 *)pr->prop->value;
|
||||
p++;
|
||||
new_drmem = (struct of_drconf_cell *)p;
|
||||
new_drmem = (struct of_drconf_cell_v1 *)p;
|
||||
|
||||
for (i = 0; i < entries; i++) {
|
||||
if ((be32_to_cpu(old_drmem[i].flags) & DRCONF_MEM_ASSIGNED) &&
|
||||
|
|
Loading…
Reference in New Issue