|
@@ -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;
|
|
@@ -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[] = {
|
|
|
{
|
|
@@ -2025,10 +2038,10 @@ err_data:
|
|
|
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 */
|
|
|
}
|
|
@@ -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)
|
|
@@ -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;
|
|
@@ -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) {
|