On 30/05/13 14:09, Jean-Christophe PLAGNIOL-VILLARD wrote: > On 12:34 Thu 30 May , Tomi Valkeinen wrote: >> When using DT, dss device does not have platform data. However, >> dss_get_ctx_loss_count() uses dss device's platform data to find the >> get_ctx_loss_count function pointer. >> >> To fix this, dss_get_ctx_loss_count() needs to be changed to get the >> platform data from the omapdss device, which is a "virtual" device and >> always has platform data. >> >> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx> >> --- >> drivers/video/omap2/dss/dss.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c >> index 94f66f9..bd01608 100644 >> --- a/drivers/video/omap2/dss/dss.c >> +++ b/drivers/video/omap2/dss/dss.c >> @@ -157,7 +157,8 @@ static void dss_restore_context(void) >> >> int dss_get_ctx_loss_count(void) >> { >> - struct omap_dss_board_info *board_data = dss.pdev->dev.platform_data; >> + struct platform_device *core_pdev = dss_get_core_pdev(); >> + struct omap_dss_board_info *board_data = core_pdev->dev.platform_data; > > how about store the pdata in the drivers internal struct and if !dt > you ust do this > > dss_dev->pdata = *pdev->dev.platform_data; > > to copy it and we do not alloc it for dt It's not quite that simple. We need some OMAP arch functions (like get_ctx_loss_count here) that are not currently exposed via any other method to drivers except passing a function pointer with platform data. We need that also when booting with DT. We have a bunch of devices for the display subsystem hardware blocks, like the "dss" here. When booting with DT, these blocks are represented in the DT data, and do not have platform data. We also have a "virtual" device, "omapdss", which doesn't match any hw block. It's created in the arch setup stage. It's really a legacy thing, but with DT it can be used conveniently to pass the platform data. The problem this patch fixes is that we used to pass the arch functions for each of those HW block drivers. But with DT, we need to get the arch functions from the "omapdss" device, gotten with dss_get_core_pdev(). Tomi
Attachment:
signature.asc
Description: OpenPGP digital signature