Message ID | 20211208151230.3695378-1-s.hauer@pengutronix.de (mailing list archive) |
---|---|
Headers | show |
Series | drm/rockchip: RK356x VOP2 support | expand |
Hi, On 12/8/21 4:12 PM, Sascha Hauer wrote: > From: Andy Yan <andy.yan@rock-chips.com> > > The VOP2 unit is found on Rockchip SoCs beginning with rk3566/rk3568. > It replaces the VOP unit found in the older Rockchip SoCs. > > This driver has been derived from the downstream Rockchip Kernel and > heavily modified: > > - All nonstandard DRM properties have been removed > - dropped struct vop2_plane_state and pass around less data between > functions > - Dropped all DRM_FORMAT_* not known on upstream > - rework register access to get rid of excessively used macros > - Drop all waiting for framesyncs > > The driver is tested with HDMI and MIPI-DSI display on a RK3568-EVB > board. Overlay support is tested with the modetest utility. AFBC support > on the cluster windows is tested with weston-simple-dmabuf-egl on > weston using the (yet to be upstreamed) panfrost driver support. > > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> > --- [..] > + > +static const struct of_device_id vop2_dt_match[] = { > + { > + .compatible = "rockchip,rk3568-vop", > + .data = &rk3568_vop > + }, { > + .compatible = "rockchip,rk3568-vop", Maybe use: .compatible = "rockchip,rk3566-vop", > + .data = &rk3566_vop > + }, { > + }, Maybe sort this list alphabetical based on compatible in case later more SoCs are added. rk3566 rk3568 === The structure layout size above could be reduced for if we get more compatible strings additions. Example vop1: static const struct of_device_id vop_driver_dt_match[] = { { .compatible = "rockchip,rk3036-vop", .data = &rk3036_vop }, { .compatible = "rockchip,rk3126-vop", .data = &rk3126_vop }, { .compatible = "rockchip,px30-vop-big", .data = &px30_vop_big }, { .compatible = "rockchip,px30-vop-lit", .data = &px30_vop_lit }, { .compatible = "rockchip,rk3066-vop", .data = &rk3066_vop }, { .compatible = "rockchip,rk3188-vop", .data = &rk3188_vop }, { .compatible = "rockchip,rk3288-vop", .data = &rk3288_vop }, { .compatible = "rockchip,rk3368-vop", .data = &rk3368_vop }, { .compatible = "rockchip,rk3366-vop", .data = &rk3366_vop }, { .compatible = "rockchip,rk3399-vop-big", .data = &rk3399_vop_big }, { .compatible = "rockchip,rk3399-vop-lit", .data = &rk3399_vop_lit }, { .compatible = "rockchip,rk3228-vop", .data = &rk3228_vop }, { .compatible = "rockchip,rk3328-vop", .data = &rk3328_vop }, {}, }; > +}; > +MODULE_DEVICE_TABLE(of, vop2_dt_match); > + > +static int vop2_probe(struct platform_device *pdev) > +{ > + struct device *dev = &pdev->dev; > + > + return component_add(dev, &vop2_component_ops); > +} > + > +static int vop2_remove(struct platform_device *pdev) > +{ > + component_del(&pdev->dev, &vop2_component_ops); > + > + return 0; > +} > + > +struct platform_driver vop2_platform_driver = { > + .probe = vop2_probe, > + .remove = vop2_remove, > + .driver = { > + .name = "rockchip-vop2", > + .of_match_table = of_match_ptr(vop2_dt_match), > + }, > +}; >
Hi Johan, On Wed, Dec 08, 2021 at 05:59:16PM +0100, Johan Jonker wrote: > Hi, > > On 12/8/21 4:12 PM, Sascha Hauer wrote: > > From: Andy Yan <andy.yan@rock-chips.com> > > > > The VOP2 unit is found on Rockchip SoCs beginning with rk3566/rk3568. > > It replaces the VOP unit found in the older Rockchip SoCs. > > > > This driver has been derived from the downstream Rockchip Kernel and > > heavily modified: > > > > - All nonstandard DRM properties have been removed > > - dropped struct vop2_plane_state and pass around less data between > > functions > > - Dropped all DRM_FORMAT_* not known on upstream > > - rework register access to get rid of excessively used macros > > - Drop all waiting for framesyncs > > > > The driver is tested with HDMI and MIPI-DSI display on a RK3568-EVB > > board. Overlay support is tested with the modetest utility. AFBC support > > on the cluster windows is tested with weston-simple-dmabuf-egl on > > weston using the (yet to be upstreamed) panfrost driver support. > > > > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> > > --- > > [..] > > > + > > +static const struct of_device_id vop2_dt_match[] = { > > + { > > + .compatible = "rockchip,rk3568-vop", > > + .data = &rk3568_vop > > + }, { > > > + .compatible = "rockchip,rk3568-vop", > > Maybe use: > .compatible = "rockchip,rk3566-vop", Copy/Paste bug. Will fix. > > > + .data = &rk3566_vop > > + }, { > > + }, > > Maybe sort this list alphabetical based on compatible in case later more > SoCs are added. > > rk3566 > rk3568 Ok. > > === > > The structure layout size above could be reduced for if we get more > compatible strings additions. > > Example vop1: > > static const struct of_device_id vop_driver_dt_match[] = { > { .compatible = "rockchip,rk3036-vop", > .data = &rk3036_vop }, > { .compatible = "rockchip,rk3126-vop", > .data = &rk3126_vop }, > { .compatible = "rockchip,px30-vop-big", > .data = &px30_vop_big }, > { .compatible = "rockchip,px30-vop-lit", > .data = &px30_vop_lit }, > { .compatible = "rockchip,rk3066-vop", > .data = &rk3066_vop }, > { .compatible = "rockchip,rk3188-vop", > .data = &rk3188_vop }, > { .compatible = "rockchip,rk3288-vop", > .data = &rk3288_vop }, > { .compatible = "rockchip,rk3368-vop", > .data = &rk3368_vop }, > { .compatible = "rockchip,rk3366-vop", > .data = &rk3366_vop }, > { .compatible = "rockchip,rk3399-vop-big", > .data = &rk3399_vop_big }, > { .compatible = "rockchip,rk3399-vop-lit", > .data = &rk3399_vop_lit }, > { .compatible = "rockchip,rk3228-vop", > .data = &rk3228_vop }, > { .compatible = "rockchip,rk3328-vop", > .data = &rk3328_vop }, > {}, It's shorter, but ugly ;) That's only my personal taste though, I don't care much. Sascha