Skip to content

Commit

Permalink
drm/exynos: hdmi: consider APB PHY
Browse files Browse the repository at this point in the history
This patch returns error in case of using APB PHY.

Exynos5420 SoC and maybe later would use APB PHY instead of
I2C PHY so such case should be considered.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
  • Loading branch information
Inki Dae authored and Inki Dae committed Mar 23, 2014
1 parent 90672f9 commit bfe4e84
Showing 1 changed file with 23 additions and 3 deletions.
26 changes: 23 additions & 3 deletions drivers/gpu/drm/exynos/exynos_hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ enum hdmi_type {
HDMI_TYPE14,
};

struct hdmi_driver_data {
unsigned int type;
unsigned int is_apb_phy:1;
};

struct hdmi_resources {
struct clk *hdmi;
struct clk *sclk_hdmi;
Expand Down Expand Up @@ -199,6 +204,14 @@ struct hdmiphy_config {
u8 conf[32];
};

struct hdmi_driver_data exynos4212_hdmi_driver_data = {
.type = HDMI_TYPE14,
};

struct hdmi_driver_data exynos5_hdmi_driver_data = {
.type = HDMI_TYPE14,
};

/* list of phy config settings */
static const struct hdmiphy_config hdmiphy_v13_configs[] = {
{
Expand Down Expand Up @@ -2025,10 +2038,10 @@ static struct s5p_hdmi_platform_data *drm_hdmi_dt_parse_pdata
static struct of_device_id hdmi_match_types[] = {
{
.compatible = "samsung,exynos5-hdmi",
.data = (void *)HDMI_TYPE14,
.data = &exynos5_hdmi_driver_data,
}, {
.compatible = "samsung,exynos4212-hdmi",
.data = (void *)HDMI_TYPE14,
.data = &exynos4212_hdmi_driver_data,
}, {
/* end node */
}
Expand All @@ -2042,6 +2055,7 @@ static int hdmi_probe(struct platform_device *pdev)
struct resource *res;
const struct of_device_id *match;
struct device_node *ddc_node, *phy_node;
struct hdmi_driver_data *drv_data;
int ret;

if (!dev->of_node)
Expand All @@ -2062,7 +2076,9 @@ static int hdmi_probe(struct platform_device *pdev)
match = of_match_node(hdmi_match_types, dev->of_node);
if (!match)
return -ENODEV;
hdata->type = (enum hdmi_type)match->data;

drv_data = (struct hdmi_driver_data *)match->data;
hdata->type = drv_data->type;

hdata->hpd_gpio = pdata->hpd_gpio;
hdata->dev = dev;
Expand Down Expand Up @@ -2096,6 +2112,10 @@ static int hdmi_probe(struct platform_device *pdev)
return -ENODEV;
}

/* Not support APB PHY yet. */
if (drv_data->is_apb_phy)
return -EPERM;

/* hdmiphy i2c driver */
phy_node = of_parse_phandle(dev->of_node, "phy", 0);
if (!phy_node) {
Expand Down

0 comments on commit bfe4e84

Please sign in to comment.