On Thu, 2012-06-28 at 20:00 +0530, Archit Taneja wrote:
> Replace the DISPC fuctions used to configure LCD channel related manager
> parameters with dss_mgr_set_lcd_config() in APPLY. This function ensures that
> the DISPC registers are written at the right time by using the shadow register
> programming model.
> 
> The LCD manager configurations is stored as a private data of manager in 
> APPLY.
> It is treated as an extra info as it's the panel drivers which trigger this
> apply via interface drivers, and not a DSS2 user like omapfb or omapdrm.
> 
> Storing LCD manager related properties in APPLY also prevents the need to 
> refer
> to the panel connected to the manager for information. This helps in making 
> the
> DSS driver less dependent on panel.
> 
> A helper function is added to check whether the manager is LCD or TV. The 
> direct
> DISPC register writes are removed from the interface drivers.


 
> +static void dss_apply_mgr_lcd_config(struct omap_overlay_manager *mgr,
> +             struct dss_lcd_mgr_config config)
> +{

This one should take a pointer to the config, not a copy (and const).

> +     struct mgr_priv_data *mp = get_mgr_priv(mgr);
> +
> +     mp->lcd_config = config;
> +     mp->extra_info_dirty = true;
> +}
> +
> +void dss_mgr_set_lcd_config(struct omap_overlay_manager *mgr,
> +             struct dss_lcd_mgr_config config)

And this.

> +{
> +     unsigned long flags;
> +     struct mgr_priv_data *mp = get_mgr_priv(mgr);
> +
> +     mutex_lock(&apply_lock);
> +
> +     if (mp->enabled)
> +             goto out;

Hmm. Should we print a warning or such here? Isn't it a bug in the
interface driver, if it tries to set the lcd config when the output is
enabled?

 Tomi

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to