Hi, On Tuesday, January 23, 2018 08:34:56 PM Kunihiko Hayashi wrote: > Enables 'memory-region' property referring to the memory description on > the reserved-memory node in case of devicetree use. > If there is no 'reg' property that specifies the address and size of > the framebuffer, the address and size written in the memory description > on the reserved-memory node can be used for the framebuffer. > > Furthermore, the reserved-memory node needs to have "no-map" attributes > because simplefb driver maps the region by ioremap_wc(). > > Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@xxxxxxxxxxxxx> This needs an ACK from Rob or Mark (DT bindings Maintainers). > --- > .../bindings/display/simple-framebuffer.txt | 3 ++ > drivers/video/fbdev/simplefb.c | 32 ++++++++++++++++++++++ > 2 files changed, 35 insertions(+) > > diff --git a/Documentation/devicetree/bindings/display/simple-framebuffer.txt b/Documentation/devicetree/bindings/display/simple-framebuffer.txt > index 5a9ce51..be5139f 100644 > --- a/Documentation/devicetree/bindings/display/simple-framebuffer.txt > +++ b/Documentation/devicetree/bindings/display/simple-framebuffer.txt > @@ -56,6 +56,9 @@ Optional properties: > framebuffer remains active. > > - display : phandle pointing to the primary display hardware node > +- memory-region: phandle to a node describing memory region as framebuffer > + memory instead of reg property. The node should include > + 'no-map'. > > Example: > > diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c > index a3c44ec..aefc4b1 100644 > --- a/drivers/video/fbdev/simplefb.c > +++ b/drivers/video/fbdev/simplefb.c > @@ -29,6 +29,7 @@ > #include <linux/clk.h> > #include <linux/clk-provider.h> > #include <linux/of.h> > +#include <linux/of_address.h> > #include <linux/of_platform.h> > #include <linux/parser.h> > #include <linux/regulator/consumer.h> > @@ -294,6 +295,35 @@ static void simplefb_clocks_enable(struct simplefb_par *par, > static void simplefb_clocks_destroy(struct simplefb_par *par) { } > #endif > > +#if defined CONFIG_OF > +static struct resource *simplefb_parse_dt_reserved_mem(struct device *dev) > +{ > + static struct resource res; > + struct device_node *np; > + int ret; > + > + np = of_parse_phandle(dev->of_node, "memory-region", 0); > + if (!np) > + return NULL; > + > + ret = of_address_to_resource(np, 0, &res); > + if (ret < 0) > + return NULL; > + > + if (!of_find_property(np, "no-map", NULL)) { > + dev_err(dev, "Can't apply mapped reserved-memory\n"); > + return NULL; > + } > + > + return &res; > +} > +#else > +static struct resource *simplefb_parse_dt_reserved_mem(struct device *dev) > +{ > + return NULL; > +} > +#endif > + > #if defined CONFIG_OF && defined CONFIG_REGULATOR > > #define SUPPLY_SUFFIX "-supply" > @@ -428,6 +458,8 @@ static int simplefb_probe(struct platform_device *pdev) > return ret; > > mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + if (!mem) > + mem = simplefb_parse_dt_reserved_mem(&pdev->dev); > if (!mem) { > dev_err(&pdev->dev, "No memory resource\n"); > return -EINVAL; Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html