On 7/23/22 19:57, Uwe Kleine-König wrote: > No source file but the driver itself includes the header containing the > platform data definition. The last user is gone since commit > 8485adf17a15 ("ARM: imx: Remove imx device directory"). > > So we can safely drop platform data support. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> I've applied all 4 patches to the fbdev git tree. Thanks! Helge > --- > drivers/video/fbdev/imxfb.c | 99 ++++++++--------------- > include/linux/platform_data/video-imxfb.h | 12 --- > 2 files changed, 34 insertions(+), 77 deletions(-) > > diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c > index a2f644c97f28..85a5bf5639d9 100644 > --- a/drivers/video/fbdev/imxfb.c > +++ b/drivers/video/fbdev/imxfb.c > @@ -656,7 +656,6 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf > > static int imxfb_init_fbinfo(struct platform_device *pdev) > { > - struct imx_fb_platform_data *pdata = dev_get_platdata(&pdev->dev); > struct fb_info *info = platform_get_drvdata(pdev); > struct imxfb_info *fbi = info->par; > struct device_node *np; > @@ -690,25 +689,20 @@ static int imxfb_init_fbinfo(struct platform_device *pdev) > info->fbops = &imxfb_ops; > info->flags = FBINFO_FLAG_DEFAULT | > FBINFO_READS_FAST; > - if (pdata) { > - fbi->lscr1 = pdata->lscr1; > - fbi->dmacr = pdata->dmacr; > - fbi->pwmr = pdata->pwmr; > - } else { > - np = pdev->dev.of_node; > - info->var.grayscale = of_property_read_bool(np, > - "cmap-greyscale"); > - fbi->cmap_inverse = of_property_read_bool(np, "cmap-inverse"); > - fbi->cmap_static = of_property_read_bool(np, "cmap-static"); > > - fbi->lscr1 = IMXFB_LSCR1_DEFAULT; > + np = pdev->dev.of_node; > + info->var.grayscale = of_property_read_bool(np, > + "cmap-greyscale"); > + fbi->cmap_inverse = of_property_read_bool(np, "cmap-inverse"); > + fbi->cmap_static = of_property_read_bool(np, "cmap-static"); > > - of_property_read_u32(np, "fsl,lpccr", &fbi->pwmr); > + fbi->lscr1 = IMXFB_LSCR1_DEFAULT; > > - of_property_read_u32(np, "fsl,lscr1", &fbi->lscr1); > + of_property_read_u32(np, "fsl,lpccr", &fbi->pwmr); > > - of_property_read_u32(np, "fsl,dmacr", &fbi->dmacr); > - } > + of_property_read_u32(np, "fsl,lscr1", &fbi->lscr1); > + > + of_property_read_u32(np, "fsl,dmacr", &fbi->dmacr); > > return 0; > } > @@ -863,10 +857,10 @@ static int imxfb_probe(struct platform_device *pdev) > struct imxfb_info *fbi; > struct lcd_device *lcd; > struct fb_info *info; > - struct imx_fb_platform_data *pdata; > struct resource *res; > struct imx_fb_videomode *m; > const struct of_device_id *of_id; > + struct device_node *display_np; > int ret, i; > int bytes_per_pixel; > > @@ -884,8 +878,6 @@ static int imxfb_probe(struct platform_device *pdev) > if (!res) > return -ENODEV; > > - pdata = dev_get_platdata(&pdev->dev); > - > info = framebuffer_alloc(sizeof(struct imxfb_info), &pdev->dev); > if (!info) > return -ENOMEM; > @@ -898,43 +890,34 @@ static int imxfb_probe(struct platform_device *pdev) > if (ret < 0) > goto failed_init; > > - if (pdata) { > - if (!fb_mode) > - fb_mode = pdata->mode[0].mode.name; > - > - fbi->mode = pdata->mode; > - fbi->num_modes = pdata->num_modes; > - } else { > - struct device_node *display_np; > - fb_mode = NULL; > - > - display_np = of_parse_phandle(pdev->dev.of_node, "display", 0); > - if (!display_np) { > - dev_err(&pdev->dev, "No display defined in devicetree\n"); > - ret = -EINVAL; > - goto failed_of_parse; > - } > + fb_mode = NULL; > > - /* > - * imxfb does not support more modes, we choose only the native > - * mode. > - */ > - fbi->num_modes = 1; > - > - fbi->mode = devm_kzalloc(&pdev->dev, > - sizeof(struct imx_fb_videomode), GFP_KERNEL); > - if (!fbi->mode) { > - ret = -ENOMEM; > - of_node_put(display_np); > - goto failed_of_parse; > - } > + display_np = of_parse_phandle(pdev->dev.of_node, "display", 0); > + if (!display_np) { > + dev_err(&pdev->dev, "No display defined in devicetree\n"); > + ret = -EINVAL; > + goto failed_of_parse; > + } > > - ret = imxfb_of_read_mode(&pdev->dev, display_np, fbi->mode); > + /* > + * imxfb does not support more modes, we choose only the native > + * mode. > + */ > + fbi->num_modes = 1; > + > + fbi->mode = devm_kzalloc(&pdev->dev, > + sizeof(struct imx_fb_videomode), GFP_KERNEL); > + if (!fbi->mode) { > + ret = -ENOMEM; > of_node_put(display_np); > - if (ret) > - goto failed_of_parse; > + goto failed_of_parse; > } > > + ret = imxfb_of_read_mode(&pdev->dev, display_np, fbi->mode); > + of_node_put(display_np); > + if (ret) > + goto failed_of_parse; > + > /* Calculate maximum bytes used per pixel. In most cases this should > * be the same as m->bpp/8 */ > m = &fbi->mode[0]; > @@ -1001,13 +984,6 @@ static int imxfb_probe(struct platform_device *pdev) > > info->fix.smem_start = fbi->map_dma; > > - if (pdata && pdata->init) { > - ret = pdata->init(fbi->pdev); > - if (ret) > - goto failed_platform_init; > - } > - > - > INIT_LIST_HEAD(&info->modelist); > for (i = 0; i < fbi->num_modes; i++) > fb_add_videomode(&fbi->mode[i].mode, &info->modelist); > @@ -1059,9 +1035,6 @@ static int imxfb_probe(struct platform_device *pdev) > failed_register: > fb_dealloc_cmap(&info->cmap); > failed_cmap: > - if (pdata && pdata->exit) > - pdata->exit(fbi->pdev); > -failed_platform_init: > dma_free_wc(&pdev->dev, fbi->map_size, info->screen_buffer, > fbi->map_dma); > failed_map: > @@ -1079,7 +1052,6 @@ static int imxfb_probe(struct platform_device *pdev) > > static int imxfb_remove(struct platform_device *pdev) > { > - struct imx_fb_platform_data *pdata; > struct fb_info *info = platform_get_drvdata(pdev); > struct imxfb_info *fbi = info->par; > struct resource *res; > @@ -1092,9 +1064,6 @@ static int imxfb_remove(struct platform_device *pdev) > > unregister_framebuffer(info); > fb_dealloc_cmap(&info->cmap); > - pdata = dev_get_platdata(&pdev->dev); > - if (pdata && pdata->exit) > - pdata->exit(fbi->pdev); > dma_free_wc(&pdev->dev, fbi->map_size, info->screen_buffer, > fbi->map_dma); > iounmap(fbi->regs); > diff --git a/include/linux/platform_data/video-imxfb.h b/include/linux/platform_data/video-imxfb.h > index 02812651af7d..b80a156a6617 100644 > --- a/include/linux/platform_data/video-imxfb.h > +++ b/include/linux/platform_data/video-imxfb.h > @@ -55,16 +55,4 @@ struct imx_fb_videomode { > unsigned char bpp; > }; > > -struct imx_fb_platform_data { > - struct imx_fb_videomode *mode; > - int num_modes; > - > - u_int pwmr; > - u_int lscr1; > - u_int dmacr; > - > - int (*init)(struct platform_device *); > - void (*exit)(struct platform_device *); > -}; > - > #endif /* ifndef __MACH_IMXFB_H__ */ > > base-commit: f2906aa863381afb0015a9eb7fefad885d4e5a56