Re: [PATCHv2 03/27] ARM: OMAP2+: add omapdss_init_of()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2013-12-16 20:46, Tony Lindgren wrote:
> * Tomi Valkeinen <tomi.valkeinen@xxxxxx> [131216 07:02]:
>> omapdss driver uses a omapdss platform device to pass platform specific
>> function pointers and DSS hardware version from the arch code to the
>> driver. This device is needed also when booting with DT.
>>
>> This patch adds omapdss_init_of() function, called from board-generic at
>> init time, which creates the omapdss device.
> ...
> 
>> --- a/arch/arm/mach-omap2/display.c
>> +++ b/arch/arm/mach-omap2/display.c
>> @@ -23,6 +23,8 @@
>>  #include <linux/clk.h>
>>  #include <linux/err.h>
>>  #include <linux/delay.h>
>> +#include <linux/of.h>
>> +#include <linux/of_platform.h>
>>  
>>  #include <video/omapdss.h>
>>  #include "omap_hwmod.h"
>> @@ -514,3 +516,63 @@ int omap_dss_reset(struct omap_hwmod *oh)
>>  
>>  	return r;
>>  }
>> +
>> +int __init omapdss_init_of(void)
>> +{
>> +	int r;
>> +	enum omapdss_version ver;
>> +
>> +	static struct omap_dss_board_info board_data = {
>> +		.dsi_enable_pads = omap_dsi_enable_pads,
>> +		.dsi_disable_pads = omap_dsi_disable_pads,
>> +		.get_context_loss_count = omap_pm_get_dev_context_loss_count,
>> +		.set_min_bus_tput = omap_dss_set_min_bus_tput,
>> +	};
>> +
>> +	ver = omap_display_get_version();
>> +
>> +	if (ver == OMAPDSS_VER_UNKNOWN) {
>> +		pr_err("DSS not supported on this SoC\n");
>> +		return -ENODEV;
>> +	}
>> +
>> +	board_data.version = ver;
>> +
>> +	omap_display_device.dev.platform_data = &board_data;
>> +
>> +	r = platform_device_register(&omap_display_device);
>> +	if (r < 0) {
>> +		pr_err("Unable to register omapdss device\n");
>> +		return r;
>> +	}
> 
> You can populate the callback functions in the pdata using
> OF_DEV_AUXDATA entries in the pdata-quirks.c. That way you could
> instantiate the dev entry for omap_display_device using DT
> and deal with it in drivers/video/omap except for the pdata
> callbacks.

The device we are creating here is not something to be created via DT.
So in addition to the devices that match to the DSS hardware blocks, we
have a 'omapdss' platform device. That's a legacy one, and it's
"virtual" in the sense that it doesn't match any HW block as such.

At some point the device should be removed totally, but for now it's
there and it's a convenient way to pass the platform data.

> Of course that can be done later too.

Yes, at the moment I'm trying to minimize the kind of code changes that
can be done later. It'd be great to get this into next merge window, but
time is running short if I do any bigger changes.

 Tomi


Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux