Hi Kevin, On Wed, Jan 5, 2011 at 5:37 AM, Kevin Hilman <khilman@xxxxxx> wrote: > Guruswamy Senthilvadivu <svadivu@xxxxxx> writes: > >> From: Senthilvadivu Guruswamy <svadivu@xxxxxx> >> >> Hwmod adaptation design requires each of the DSS HW IP to be a platform driver. >> Platform driver of dsshw has to be registered before of dispc, rfbi, dsi1, >> venc and omapdisplay driver should be after all the HW IPs. Sequence it with >> arch_initcall and device_initcall_sync. >> >> Signed-off-by: Senthilvadivu Guruswamy <svadivu@xxxxxx> > > Rather than creating a bunch of empty/dummy driver here to be populated > later, I'd prefer them to be created as needed in the subsequent > patches. > > For example, the dispc parts of this patch should be added in PATCH 9 > where you populate the functions. The RFBI parts of this patch should > be added in PATCH 12, etc. etc. Thanks for your comments; since Senthil is going to be out for sometime, I would make these changes and push as the next version; will wait a bit for other comments too. Best regards, ~Sumit. > > Kevin > > >> --- >> drivers/video/omap2/dss/core.c | 2 +- >> drivers/video/omap2/dss/dispc.c | 28 ++++++++++++++++++++++++++++ >> drivers/video/omap2/dss/dsi.c | 29 ++++++++++++++++++++++++++++- >> drivers/video/omap2/dss/dss.c | 27 +++++++++++++++++++++++++++ >> drivers/video/omap2/dss/rfbi.c | 28 ++++++++++++++++++++++++++++ >> drivers/video/omap2/dss/venc.c | 28 ++++++++++++++++++++++++++++ >> 6 files changed, 140 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c >> index 48d20d8..d165434 100644 >> --- a/drivers/video/omap2/dss/core.c >> +++ b/drivers/video/omap2/dss/core.c >> @@ -989,7 +989,7 @@ static int __init omap_dss_init2(void) >> } >> >> core_initcall(omap_dss_init); >> -device_initcall(omap_dss_init2); >> +device_initcall_sync(omap_dss_init2); >> #endif >> >> MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@xxxxxxxxx>"); >> diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c >> index fa40fa5..942dea5 100644 >> --- a/drivers/video/omap2/dss/dispc.c >> +++ b/drivers/video/omap2/dss/dispc.c >> @@ -3167,3 +3167,31 @@ int dispc_setup_plane(enum omap_plane plane, >> >> return r; >> } >> + >> +/* DISPC HW IP initialisation */ >> +static int omap_dispchw_probe(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static int omap_dispchw_remove(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static struct platform_driver omap_dispchw_driver = { >> + .probe = omap_dispchw_probe, >> + .remove = omap_dispchw_remove, >> + .driver = { >> + .name = "omap_dispc", >> + .owner = THIS_MODULE, >> + }, >> +}; >> + >> +static int __init omap_dispc_init(void) >> +{ >> + return platform_driver_register(&omap_dispchw_driver); >> +} >> + >> +device_initcall(omap_dispc_init); >> + >> diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c >> index aa4f7a5..037d366 100644 >> --- a/drivers/video/omap2/dss/dsi.c >> +++ b/drivers/video/omap2/dss/dsi.c >> @@ -292,7 +292,6 @@ static inline u32 dsi_read_reg(const struct dsi_reg idx) >> return __raw_readl(dsi.base + idx.idx); >> } >> >> - >> void dsi_save_context(void) >> { >> } >> @@ -3304,3 +3303,31 @@ void dsi_exit(void) >> DSSDBG("omap_dsi_exit\n"); >> } >> >> +/* DSI1 HW IP initialisation */ >> +static int omap_dsi1hw_probe(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static int omap_dsi1hw_remove(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static struct platform_driver omap_dsi1hw_driver = { >> + .probe = omap_dsi1hw_probe, >> + .remove = omap_dsi1hw_remove, >> + .driver = { >> + .name = "omap_dsi1", >> + .owner = THIS_MODULE, >> + }, >> +}; >> + >> +static int __init omap_dsi1_init(void) >> +{ >> + return platform_driver_register(&omap_dsi1hw_driver); >> +} >> + >> +device_initcall(omap_dsi1_init); >> + >> + >> diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c >> index 77c3621..6d0bd89 100644 >> --- a/drivers/video/omap2/dss/dss.c >> +++ b/drivers/video/omap2/dss/dss.c >> @@ -639,3 +639,30 @@ void dss_exit(void) >> iounmap(dss.base); >> } >> >> +/* DSS HW IP initialisation */ >> +static int omap_dsshw_probe(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static int omap_dsshw_remove(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static struct platform_driver omap_dsshw_driver = { >> + .probe = omap_dsshw_probe, >> + .remove = omap_dsshw_remove, >> + .driver = { >> + .name = "omap_dss", >> + .owner = THIS_MODULE, >> + }, >> +}; >> + >> +static int __init omap_dss_init1(void) >> +{ >> + return platform_driver_register(&omap_dsshw_driver); >> +} >> + >> +arch_initcall(omap_dss_init1); >> + >> diff --git a/drivers/video/omap2/dss/rfbi.c b/drivers/video/omap2/dss/rfbi.c >> index bbe6246..a086233 100644 >> --- a/drivers/video/omap2/dss/rfbi.c >> +++ b/drivers/video/omap2/dss/rfbi.c >> @@ -1054,3 +1054,31 @@ int rfbi_init_display(struct omap_dss_device *dssdev) >> dssdev->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; >> return 0; >> } >> + >> +/* RFBI HW IP initialisation */ >> +static int omap_rfbihw_probe(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static int omap_rfbihw_remove(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static struct platform_driver omap_rfbihw_driver = { >> + .probe = omap_rfbihw_probe, >> + .remove = omap_rfbihw_remove, >> + .driver = { >> + .name = "omap_rfbi", >> + .owner = THIS_MODULE, >> + }, >> +}; >> + >> +static int __init omap_rfbi_init(void) >> +{ >> + return platform_driver_register(&omap_rfbihw_driver); >> +} >> + >> +device_initcall(omap_rfbi_init); >> + >> diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c >> index eff3505..ac63cee 100644 >> --- a/drivers/video/omap2/dss/venc.c >> +++ b/drivers/video/omap2/dss/venc.c >> @@ -740,3 +740,31 @@ void venc_dump_regs(struct seq_file *s) >> >> #undef DUMPREG >> } >> + >> +/* VENC HW IP initialisation */ >> +static int omap_venchw_probe(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static int omap_venchw_remove(struct platform_device *pdev) >> +{ >> + return 0; >> +} >> + >> +static struct platform_driver omap_venchw_driver = { >> + .probe = omap_venchw_probe, >> + .remove = omap_venchw_remove, >> + .driver = { >> + .name = "omap_venc", >> + .owner = THIS_MODULE, >> + }, >> +}; >> + >> +static int __init omap_venc_init(void) >> +{ >> + return platform_driver_register(&omap_venchw_driver); >> +} >> + >> +device_initcall(omap_venc_init); >> + > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html