[PATCH 3/3] OMAP: use generic panel driver in board files
Bryan Wu
bryan.wu at canonical.com
Wed Nov 3 11:42:59 EDT 2010
On Wed, Nov 3, 2010 at 11:08 AM, Tomi Valkeinen
<tomi.valkeinen at nokia.com> wrote:
> On Wed, 2010-11-03 at 13:56 +0100, ext Taneja, Archit wrote:
>> Hi,
>>
>> linux-omap-owner at vger.kernel.org wrote:
>> > Introduce some fields in struct panel, which will be used to
>> > match the right panel configurations in generic panel driver.
>> >
>> > Still keep sharp_ls_panel, since the sharp_ls_panel driver
>> > contains blacklight control driver code which will be moved
>> > out later. Then we can use generic driver for sharp_ls_panel.
>> >
>> > Signed-off-by: Bryan Wu <bryan.wu at canonical.com>
>>
>> [snip]
>>
>> > diff --git a/arch/arm/plat-omap/include/plat/display.h
>> > b/arch/arm/plat-omap/include/plat/display.h
>> > index c915a66..6e1fbbd 100644
>> > --- a/arch/arm/plat-omap/include/plat/display.h
>> > +++ b/arch/arm/plat-omap/include/plat/display.h
>> > @@ -346,6 +346,24 @@ struct omap_overlay_manager {
>> > int (*disable)(struct omap_overlay_manager *mgr); };
>> >
>> > +struct omap_display_panel {
>> > + struct omap_video_timings timings;
>> > +
>> > + int acbi; /* ac-bias pin transitions per interrupt */ + /* Unit: line
>> > clocks */ + int acb; /* ac-bias pin frequency */
>> > +
>> > + enum omap_panel_config config;
>> > +
>> > + int power_on_delay;
>> > + int power_off_delay;
>> > + /*
>> > + * Used to match device to panel configuration
>> > + * when use generic panel driver
>> > + */
>> > + const char *name;
>> > +};
>> > +
>> > struct omap_dss_device {
>> > struct device dev;
>> >
>> > @@ -395,15 +413,7 @@ struct omap_dss_device {
>> > } venc;
>> > } phy;
>> >
>> > - struct {
>> > - struct omap_video_timings timings;
>> > -
>> > - int acbi; /* ac-bias pin transitions per
>> > interrupt */
>> > - /* Unit: line clocks */
>> > - int acb; /* ac-bias pin frequency */
>> > -
>> > - enum omap_panel_config config;
>> > - } panel;
>> > + struct omap_display_panel panel;
>> >
>> > struct {
>> > u8 pixel_size;
>>
>> I don't think that changing the omap_dss_device structure is the best way
>> to go about this. Members like power_on_delay and power_off_delay may not
>> be required by all types of panels. Same goes for the new "name" member since
>> its only used by the dummy dpi panels.
>>
>> I think it would be better to go with the approach taken in panel-taal.c
>> where a struct "panel_config" exists to take care of extra requirements.
>>
>> The omap_dss_device struct should contain only those members which would be
>> needed by the interface driver files like dsi.c, dpi.c etc. The rest should be
>> taken care of the panel drivers internally.
>
> Yes, the configuration for the panel is panel driver specific features,
> and should not be in the standard structs. No need to add anything to
> display.h.
>
> In fact, there are things in display.h that should be removed, and this
> configurable panel driver could do that also. omap_dss_device contains
> reset_gpio, max_backlight_level, platform_enable/disable and
> set/get_backlight, which should actually be in panel spesific struct.
>
After a quick study of panel-taal.c driver and board-4430sdp.c, I
believe we can pass the information from *data pointer of struct
omap_dss_device. And keep the all panel specific configuration in
driver.
I will keep the struct omap_dss_device untouched.
Thanks,
-Bryan
More information about the linux-arm-kernel
mailing list