Hi, On 10/11/23 16:38, Thierry Reding wrote: > From: Thierry Reding <treding@xxxxxxxxxx> > > The simple-framebuffer bindings specify that the "memory-region" > property can be used as an alternative to the "reg" property to define > the framebuffer memory used by the display hardware. Implement support > for this in the simplefb driver. > > Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> Thanks, patch looks good to me: Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx> Regards, Hans > --- > drivers/video/fbdev/simplefb.c | 35 +++++++++++++++++++++++++++++----- > 1 file changed, 30 insertions(+), 5 deletions(-) > > diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c > index 62f99f6fccd3..18025f34fde7 100644 > --- a/drivers/video/fbdev/simplefb.c > +++ b/drivers/video/fbdev/simplefb.c > @@ -21,6 +21,7 @@ > #include <linux/platform_device.h> > #include <linux/clk.h> > #include <linux/of.h> > +#include <linux/of_address.h> > #include <linux/of_clk.h> > #include <linux/of_platform.h> > #include <linux/parser.h> > @@ -121,12 +122,13 @@ struct simplefb_params { > u32 height; > u32 stride; > struct simplefb_format *format; > + struct resource memory; > }; > > static int simplefb_parse_dt(struct platform_device *pdev, > struct simplefb_params *params) > { > - struct device_node *np = pdev->dev.of_node; > + struct device_node *np = pdev->dev.of_node, *mem; > int ret; > const char *format; > int i; > @@ -166,6 +168,23 @@ static int simplefb_parse_dt(struct platform_device *pdev, > return -EINVAL; > } > > + mem = of_parse_phandle(np, "memory-region", 0); > + if (mem) { > + ret = of_address_to_resource(mem, 0, ¶ms->memory); > + if (ret < 0) { > + dev_err(&pdev->dev, "failed to parse memory-region\n"); > + of_node_put(mem); > + return ret; > + } > + > + if (of_property_present(np, "reg")) > + dev_warn(&pdev->dev, "preferring \"memory-region\" over \"reg\" property\n"); > + > + of_node_put(mem); > + } else { > + memset(¶ms->memory, 0, sizeof(params->memory)); > + } > + > return 0; > } > > @@ -193,6 +212,8 @@ static int simplefb_parse_pd(struct platform_device *pdev, > return -EINVAL; > } > > + memset(¶ms->memory, 0, sizeof(params->memory)); > + > return 0; > } > > @@ -431,10 +452,14 @@ static int simplefb_probe(struct platform_device *pdev) > if (ret) > return ret; > > - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - if (!res) { > - dev_err(&pdev->dev, "No memory resource\n"); > - return -EINVAL; > + if (params.memory.start == 0 && params.memory.end == 0) { > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + if (!res) { > + dev_err(&pdev->dev, "No memory resource\n"); > + return -EINVAL; > + } > + } else { > + res = ¶ms.memory; > } > > mem = request_mem_region(res->start, resource_size(res), "simplefb");