diff options
Diffstat (limited to 'fs/pstore/ram.c')
-rw-r--r-- | fs/pstore/ram.c | 47 |
1 files changed, 17 insertions, 30 deletions
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index 0d8bb8f418..4732bd4e31 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c @@ -410,13 +410,13 @@ static int ramoops_init_prz(const char *name, return 0; } -static int ramoops_parse_dt_size(struct device_d *dev, +static int ramoops_parse_dt_size(struct device *dev, const char *propname, u32 *value) { u32 val32 = 0; int ret; - ret = of_property_read_u32(dev->device_node, propname, &val32); + ret = of_property_read_u32(dev->of_node, propname, &val32); if (ret < 0 && ret != -EINVAL) { dev_err(dev, "failed to parse property %s: %d\n", propname, ret); @@ -432,10 +432,10 @@ static int ramoops_parse_dt_size(struct device_d *dev, return 0; } -static int ramoops_parse_dt(struct device_d *dev, +static int ramoops_parse_dt(struct device *dev, struct ramoops_platform_data *pdata) { - struct device_node *of_node = dev->device_node; + struct device_node *of_node = dev->of_node; struct resource *res; u32 value; int ret; @@ -474,37 +474,24 @@ static int ramoops_of_fixup(struct device_node *root, void *data) { struct ramoops_platform_data *pdata = data; struct device_node *node; - u32 reg[2]; + struct resource res = {}; int ret; - node = of_get_child_by_name(root, "reserved-memory"); - if (!node) { - pr_info("Adding reserved-memory node\n"); - node = of_create_node(root, "/reserved-memory"); - if (!node) - return -ENOMEM; + res.start = pdata->mem_address; + res.end = res.start + pdata->mem_size; + res.name = "ramoops"; - of_property_write_u32(node, "#address-cells", 1); - of_property_write_u32(node, "#size-cells", 1); - of_new_property(node, "ranges", NULL, 0); - } + ret = of_fixup_reserved_memory(root, &res); + if (ret) + return ret; - node = of_get_child_by_name(node, "ramoops"); - if (!node) { - pr_info("Adding ramoops node\n"); - node = of_create_node(root, "/reserved-memory/ramoops"); - if (!node) - return -ENOMEM; - } + node = of_find_node_by_path_from(root, "/reserved-memory/ramoops"); + if (!node) + return -ENOMEM; ret = of_property_write_string(node, "compatible", "ramoops"); if (ret) return ret; - reg[0] = pdata->mem_address; - reg[1] = pdata->mem_size; - ret = of_property_write_u32_array(node, "reg", reg, 2); - if (ret) - return ret; ret = of_property_write_bool(node, "unbuffered", pdata->mem_type); if (ret) @@ -530,7 +517,7 @@ static int ramoops_of_fixup(struct device_node *root, void *data) return 0; } -static int ramoops_probe(struct device_d *dev) +static int ramoops_probe(struct device *dev) { struct ramoops_platform_data *pdata = dummy_data; struct ramoops_context *cxt = &oops_cxt; @@ -639,7 +626,6 @@ static int ramoops_probe(struct device_d *dev) ramoops_ecc); globalvar_add_simple("linux.bootargs.ramoops", kernelargs); } else { - of_add_reserve_entry(cxt->phys_addr, cxt->phys_addr + mem_size); of_register_fixup(ramoops_of_fixup, pdata); } @@ -689,8 +675,9 @@ static const struct of_device_id ramoops_dt_ids[] = { { .compatible = "ramoops" }, { }, }; +MODULE_DEVICE_TABLE(of, ramoops_dt_ids); -static struct driver_d ramoops_driver = { +static struct driver ramoops_driver = { .name = "ramoops", .probe = ramoops_probe, .of_compatible = DRV_OF_COMPAT(ramoops_dt_ids), |