Skip to content

Commit

Permalink
OMAPDSS: HDMI: Replace spinlock with mutex in hdmi_check_hpd_state
Browse files Browse the repository at this point in the history
State change of HDMI PHY could potentially take many millisecs, we can do
better by protecting things in hdmi_set_phy_pwr() with a mutex rather than
a spin_lock_irqsave.

Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Jassi Brar authored and Tomi Valkeinen committed Jun 29, 2012
1 parent ece2f15 commit 3a5383a
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 5 deletions.
1 change: 1 addition & 0 deletions drivers/video/omap2/dss/hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -758,6 +758,7 @@ static int __init omapdss_hdmihw_probe(struct platform_device *pdev)
hdmi.ip_data.core_av_offset = HDMI_CORE_AV;
hdmi.ip_data.pll_offset = HDMI_PLLCTRL;
hdmi.ip_data.phy_offset = HDMI_PHY;
mutex_init(&hdmi.ip_data.lock);

hdmi_panel_init();

Expand Down
1 change: 1 addition & 0 deletions drivers/video/omap2/dss/ti_hdmi.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ struct hdmi_ip_data {

/* ti_hdmi_4xxx_ip private data. These should be in a separate struct */
int hpd_gpio;
struct mutex lock;
};
int ti_hdmi_4xxx_phy_enable(struct hdmi_ip_data *ip_data);
void ti_hdmi_4xxx_phy_disable(struct hdmi_ip_data *ip_data);
Expand Down
7 changes: 2 additions & 5 deletions drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,13 +235,10 @@ void ti_hdmi_4xxx_pll_disable(struct hdmi_ip_data *ip_data)

static int hdmi_check_hpd_state(struct hdmi_ip_data *ip_data)
{
unsigned long flags;
bool hpd;
int r;
/* this should be in ti_hdmi_4xxx_ip private data */
static DEFINE_SPINLOCK(phy_tx_lock);

spin_lock_irqsave(&phy_tx_lock, flags);
mutex_lock(&ip_data->lock);

hpd = gpio_get_value(ip_data->hpd_gpio);

Expand All @@ -257,7 +254,7 @@ static int hdmi_check_hpd_state(struct hdmi_ip_data *ip_data)
}

err:
spin_unlock_irqrestore(&phy_tx_lock, flags);
mutex_unlock(&ip_data->lock);
return r;
}

Expand Down

0 comments on commit 3a5383a

Please sign in to comment.