diff options
author | Johan Hovold <johan@kernel.org> | 2014-09-15 12:07:37 -0400 |
---|---|---|
committer | Johan Hovold <johan@kernel.org> | 2014-09-15 12:10:34 -0400 |
commit | 4b7154ba70bb20a3c024faabdd2bc207b550a813 (patch) | |
tree | 99a6e1204ec5deaca27bcbfc75ca16d3633433f2 /drivers/gpu/drm/msm | |
parent | adceac14166da8c466223a35ec59c4a4adeef976 (diff) | |
parent | 9e82bf014195d6f0054982c463575cdce24292be (diff) |
Merge tag 'v3.17-rc5' into usb-next
USB fixes in Linux 3.17-rc5 are needed to build on top of for 3.18.
Signed-off-by: Johan Hovold <johan@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/msm')
-rw-r--r-- | drivers/gpu/drm/msm/hdmi/hdmi.c | 46 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/hdmi/hdmi_phy_8960.c | 15 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 2 |
3 files changed, 38 insertions, 25 deletions
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c index a125a7e32742..c6c9b02e0ada 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c | |||
@@ -258,28 +258,30 @@ static void set_hdmi_pdev(struct drm_device *dev, | |||
258 | priv->hdmi_pdev = pdev; | 258 | priv->hdmi_pdev = pdev; |
259 | } | 259 | } |
260 | 260 | ||
261 | #ifdef CONFIG_OF | ||
262 | static int get_gpio(struct device *dev, struct device_node *of_node, const char *name) | ||
263 | { | ||
264 | int gpio = of_get_named_gpio(of_node, name, 0); | ||
265 | if (gpio < 0) { | ||
266 | char name2[32]; | ||
267 | snprintf(name2, sizeof(name2), "%s-gpio", name); | ||
268 | gpio = of_get_named_gpio(of_node, name2, 0); | ||
269 | if (gpio < 0) { | ||
270 | dev_err(dev, "failed to get gpio: %s (%d)\n", | ||
271 | name, gpio); | ||
272 | gpio = -1; | ||
273 | } | ||
274 | } | ||
275 | return gpio; | ||
276 | } | ||
277 | #endif | ||
278 | |||
261 | static int hdmi_bind(struct device *dev, struct device *master, void *data) | 279 | static int hdmi_bind(struct device *dev, struct device *master, void *data) |
262 | { | 280 | { |
263 | static struct hdmi_platform_config config = {}; | 281 | static struct hdmi_platform_config config = {}; |
264 | #ifdef CONFIG_OF | 282 | #ifdef CONFIG_OF |
265 | struct device_node *of_node = dev->of_node; | 283 | struct device_node *of_node = dev->of_node; |
266 | 284 | ||
267 | int get_gpio(const char *name) | ||
268 | { | ||
269 | int gpio = of_get_named_gpio(of_node, name, 0); | ||
270 | if (gpio < 0) { | ||
271 | char name2[32]; | ||
272 | snprintf(name2, sizeof(name2), "%s-gpio", name); | ||
273 | gpio = of_get_named_gpio(of_node, name2, 0); | ||
274 | if (gpio < 0) { | ||
275 | dev_err(dev, "failed to get gpio: %s (%d)\n", | ||
276 | name, gpio); | ||
277 | gpio = -1; | ||
278 | } | ||
279 | } | ||
280 | return gpio; | ||
281 | } | ||
282 | |||
283 | if (of_device_is_compatible(of_node, "qcom,hdmi-tx-8074")) { | 285 | if (of_device_is_compatible(of_node, "qcom,hdmi-tx-8074")) { |
284 | static const char *hpd_reg_names[] = {"hpd-gdsc", "hpd-5v"}; | 286 | static const char *hpd_reg_names[] = {"hpd-gdsc", "hpd-5v"}; |
285 | static const char *pwr_reg_names[] = {"core-vdda", "core-vcc"}; | 287 | static const char *pwr_reg_names[] = {"core-vdda", "core-vcc"}; |
@@ -312,12 +314,12 @@ static int hdmi_bind(struct device *dev, struct device *master, void *data) | |||
312 | } | 314 | } |
313 | 315 | ||
314 | config.mmio_name = "core_physical"; | 316 | config.mmio_name = "core_physical"; |
315 | config.ddc_clk_gpio = get_gpio("qcom,hdmi-tx-ddc-clk"); | 317 | config.ddc_clk_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-ddc-clk"); |
316 | config.ddc_data_gpio = get_gpio("qcom,hdmi-tx-ddc-data"); | 318 | config.ddc_data_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-ddc-data"); |
317 | config.hpd_gpio = get_gpio("qcom,hdmi-tx-hpd"); | 319 | config.hpd_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-hpd"); |
318 | config.mux_en_gpio = get_gpio("qcom,hdmi-tx-mux-en"); | 320 | config.mux_en_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-mux-en"); |
319 | config.mux_sel_gpio = get_gpio("qcom,hdmi-tx-mux-sel"); | 321 | config.mux_sel_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-mux-sel"); |
320 | config.mux_lpm_gpio = get_gpio("qcom,hdmi-tx-mux-lpm"); | 322 | config.mux_lpm_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-mux-lpm"); |
321 | 323 | ||
322 | #else | 324 | #else |
323 | static const char *hpd_clk_names[] = { | 325 | static const char *hpd_clk_names[] = { |
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_phy_8960.c b/drivers/gpu/drm/msm/hdmi/hdmi_phy_8960.c index 902d7685d441..f408b69486a8 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_phy_8960.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_phy_8960.c | |||
@@ -15,19 +15,25 @@ | |||
15 | * this program. If not, see <http://www.gnu.org/licenses/>. | 15 | * this program. If not, see <http://www.gnu.org/licenses/>. |
16 | */ | 16 | */ |
17 | 17 | ||
18 | #ifdef CONFIG_COMMON_CLK | ||
18 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
19 | #include <linux/clk-provider.h> | 20 | #include <linux/clk-provider.h> |
21 | #endif | ||
20 | 22 | ||
21 | #include "hdmi.h" | 23 | #include "hdmi.h" |
22 | 24 | ||
23 | struct hdmi_phy_8960 { | 25 | struct hdmi_phy_8960 { |
24 | struct hdmi_phy base; | 26 | struct hdmi_phy base; |
25 | struct hdmi *hdmi; | 27 | struct hdmi *hdmi; |
28 | #ifdef CONFIG_COMMON_CLK | ||
26 | struct clk_hw pll_hw; | 29 | struct clk_hw pll_hw; |
27 | struct clk *pll; | 30 | struct clk *pll; |
28 | unsigned long pixclk; | 31 | unsigned long pixclk; |
32 | #endif | ||
29 | }; | 33 | }; |
30 | #define to_hdmi_phy_8960(x) container_of(x, struct hdmi_phy_8960, base) | 34 | #define to_hdmi_phy_8960(x) container_of(x, struct hdmi_phy_8960, base) |
35 | |||
36 | #ifdef CONFIG_COMMON_CLK | ||
31 | #define clk_to_phy(x) container_of(x, struct hdmi_phy_8960, pll_hw) | 37 | #define clk_to_phy(x) container_of(x, struct hdmi_phy_8960, pll_hw) |
32 | 38 | ||
33 | /* | 39 | /* |
@@ -374,7 +380,7 @@ static struct clk_init_data pll_init = { | |||
374 | .parent_names = hdmi_pll_parents, | 380 | .parent_names = hdmi_pll_parents, |
375 | .num_parents = ARRAY_SIZE(hdmi_pll_parents), | 381 | .num_parents = ARRAY_SIZE(hdmi_pll_parents), |
376 | }; | 382 | }; |
377 | 383 | #endif | |
378 | 384 | ||
379 | /* | 385 | /* |
380 | * HDMI Phy: | 386 | * HDMI Phy: |
@@ -480,12 +486,15 @@ struct hdmi_phy *hdmi_phy_8960_init(struct hdmi *hdmi) | |||
480 | { | 486 | { |
481 | struct hdmi_phy_8960 *phy_8960; | 487 | struct hdmi_phy_8960 *phy_8960; |
482 | struct hdmi_phy *phy = NULL; | 488 | struct hdmi_phy *phy = NULL; |
483 | int ret, i; | 489 | int ret; |
490 | #ifdef CONFIG_COMMON_CLK | ||
491 | int i; | ||
484 | 492 | ||
485 | /* sanity check: */ | 493 | /* sanity check: */ |
486 | for (i = 0; i < (ARRAY_SIZE(freqtbl) - 1); i++) | 494 | for (i = 0; i < (ARRAY_SIZE(freqtbl) - 1); i++) |
487 | if (WARN_ON(freqtbl[i].rate < freqtbl[i+1].rate)) | 495 | if (WARN_ON(freqtbl[i].rate < freqtbl[i+1].rate)) |
488 | return ERR_PTR(-EINVAL); | 496 | return ERR_PTR(-EINVAL); |
497 | #endif | ||
489 | 498 | ||
490 | phy_8960 = kzalloc(sizeof(*phy_8960), GFP_KERNEL); | 499 | phy_8960 = kzalloc(sizeof(*phy_8960), GFP_KERNEL); |
491 | if (!phy_8960) { | 500 | if (!phy_8960) { |
@@ -499,6 +508,7 @@ struct hdmi_phy *hdmi_phy_8960_init(struct hdmi *hdmi) | |||
499 | 508 | ||
500 | phy_8960->hdmi = hdmi; | 509 | phy_8960->hdmi = hdmi; |
501 | 510 | ||
511 | #ifdef CONFIG_COMMON_CLK | ||
502 | phy_8960->pll_hw.init = &pll_init; | 512 | phy_8960->pll_hw.init = &pll_init; |
503 | phy_8960->pll = devm_clk_register(hdmi->dev->dev, &phy_8960->pll_hw); | 513 | phy_8960->pll = devm_clk_register(hdmi->dev->dev, &phy_8960->pll_hw); |
504 | if (IS_ERR(phy_8960->pll)) { | 514 | if (IS_ERR(phy_8960->pll)) { |
@@ -506,6 +516,7 @@ struct hdmi_phy *hdmi_phy_8960_init(struct hdmi *hdmi) | |||
506 | phy_8960->pll = NULL; | 516 | phy_8960->pll = NULL; |
507 | goto fail; | 517 | goto fail; |
508 | } | 518 | } |
519 | #endif | ||
509 | 520 | ||
510 | return phy; | 521 | return phy; |
511 | 522 | ||
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 26ee80db17af..fcf95680413d 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c | |||
@@ -52,7 +52,7 @@ module_param(reglog, bool, 0600); | |||
52 | #define reglog 0 | 52 | #define reglog 0 |
53 | #endif | 53 | #endif |
54 | 54 | ||
55 | static char *vram; | 55 | static char *vram = "16m"; |
56 | MODULE_PARM_DESC(vram, "Configure VRAM size (for devices without IOMMU/GPUMMU"); | 56 | MODULE_PARM_DESC(vram, "Configure VRAM size (for devices without IOMMU/GPUMMU"); |
57 | module_param(vram, charp, 0); | 57 | module_param(vram, charp, 0); |
58 | 58 | ||