Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'next/hdmi-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/dt

From Kukjin Kim:
This is for adding support for DT based exynos5250 hdmi and it adds
device node for hdmi, mixer, hdmiphy and hdmiddc.

* 'next/hdmi-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
ARM: EXYNOS: removing exynos-drm device registration from non-dt platforms
ARM: EXYNOS: add clocks for exynos5 hdmi
ARM: dts: add device tree support for exynos5 hdmiddc
ARM: dts: add device tree support for exynos5 hdmiphy
ARM: dts: add device tree support for exynos5 mixer
ARM: dts: add device tree support for exynos5 hdmi

+124 -50
+22
Documentation/devicetree/bindings/drm/exynos/hdmi.txt
··· 1 + Device-Tree bindings for drm hdmi driver 2 + 3 + Required properties: 4 + - compatible: value should be "samsung,exynos5-hdmi". 5 + - reg: physical base address of the hdmi and length of memory mapped 6 + region. 7 + - interrupts: interrupt number to the cpu. 8 + - hpd-gpio: following information about the hotplug gpio pin. 9 + a) phandle of the gpio controller node. 10 + b) pin number within the gpio controller. 11 + c) pin function mode. 12 + d) optional flags and pull up/down. 13 + e) drive strength. 14 + 15 + Example: 16 + 17 + hdmi { 18 + compatible = "samsung,exynos5-hdmi"; 19 + reg = <0x14530000 0x100000>; 20 + interrupts = <0 95 0>; 21 + hpd-gpio = <&gpx3 7 0xf 1 3>; 22 + };
+12
Documentation/devicetree/bindings/drm/exynos/hdmiddc.txt
··· 1 + Device-Tree bindings for hdmiddc driver 2 + 3 + Required properties: 4 + - compatible: value should be "samsung,exynos5-hdmiddc". 5 + - reg: I2C address of the hdmiddc device. 6 + 7 + Example: 8 + 9 + hdmiddc { 10 + compatible = "samsung,exynos5-hdmiddc"; 11 + reg = <0x50>; 12 + };
+12
Documentation/devicetree/bindings/drm/exynos/hdmiphy.txt
··· 1 + Device-Tree bindings for hdmiphy driver 2 + 3 + Required properties: 4 + - compatible: value should be "samsung,exynos5-hdmiphy". 5 + - reg: I2C address of the hdmiphy device. 6 + 7 + Example: 8 + 9 + hdmiphy { 10 + compatible = "samsung,exynos5-hdmiphy"; 11 + reg = <0x38>; 12 + };
+15
Documentation/devicetree/bindings/drm/exynos/mixer.txt
··· 1 + Device-Tree bindings for mixer driver 2 + 3 + Required properties: 4 + - compatible: value should be "samsung,exynos5-mixer". 5 + - reg: physical base address of the mixer and length of memory mapped 6 + region. 7 + - interrupts: interrupt number to the cpu. 8 + 9 + Example: 10 + 11 + mixer { 12 + compatible = "samsung,exynos5-mixer"; 13 + reg = <0x14450000 0x10000>; 14 + interrupts = <0 94 0>; 15 + };
+23 -1
arch/arm/boot/dts/exynos5250-smdk5250.dts
··· 56 56 }; 57 57 58 58 i2c@12C80000 { 59 - status = "disabled"; 59 + samsung,i2c-sda-delay = <100>; 60 + samsung,i2c-max-bus-freq = <66000>; 61 + gpios = <&gpa0 6 3 3 0>, 62 + <&gpa0 7 3 3 0>; 63 + 64 + hdmiddc@50 { 65 + compatible = "samsung,exynos5-hdmiddc"; 66 + reg = <0x50>; 67 + }; 60 68 }; 61 69 62 70 i2c@12C90000 { ··· 85 77 86 78 i2c@12CD0000 { 87 79 status = "disabled"; 80 + }; 81 + 82 + i2c@12CE0000 { 83 + samsung,i2c-sda-delay = <100>; 84 + samsung,i2c-max-bus-freq = <66000>; 85 + 86 + hdmiphy@38 { 87 + compatible = "samsung,exynos5-hdmiphy"; 88 + reg = <0x38>; 89 + }; 88 90 }; 89 91 90 92 dwmmc_0: dwmmc0@12200000 { ··· 183 165 184 166 spi_2: spi@12d40000 { 185 167 status = "disabled"; 168 + }; 169 + 170 + hdmi { 171 + hpd-gpio = <&gpx3 7 0xf 1 3>; 186 172 }; 187 173 };
+20
arch/arm/boot/dts/exynos5250.dtsi
··· 156 156 #size-cells = <0>; 157 157 }; 158 158 159 + i2c@12CE0000 { 160 + compatible = "samsung,s3c2440-hdmiphy-i2c"; 161 + reg = <0x12CE0000 0x1000>; 162 + interrupts = <0 64 0>; 163 + #address-cells = <1>; 164 + #size-cells = <0>; 165 + }; 166 + 159 167 spi_0: spi@12d20000 { 160 168 compatible = "samsung,exynos4210-spi"; 161 169 reg = <0x12d20000 0x100>; ··· 527 519 compatible = "samsung,exynos5-gsc"; 528 520 reg = <0x13e30000 0x1000>; 529 521 interrupts = <0 88 0>; 522 + }; 523 + 524 + hdmi { 525 + compatible = "samsung,exynos5-hdmi"; 526 + reg = <0x14530000 0x100000>; 527 + interrupts = <0 95 0>; 528 + }; 529 + 530 + mixer { 531 + compatible = "samsung,exynos5-mixer"; 532 + reg = <0x14450000 0x10000>; 533 + interrupts = <0 94 0>; 530 534 }; 531 535 };
-1
arch/arm/mach-exynos/Makefile
··· 53 53 obj-$(CONFIG_EXYNOS4_DEV_DWMCI) += dev-dwmci.o 54 54 obj-$(CONFIG_EXYNOS_DEV_DMA) += dma.o 55 55 obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI) += dev-ohci.o 56 - obj-$(CONFIG_EXYNOS_DEV_DRM) += dev-drm.o 57 56 obj-$(CONFIG_EXYNOS_DEV_SYSMMU) += dev-sysmmu.o 58 57 59 58 obj-$(CONFIG_ARCH_EXYNOS) += setup-i2c0.o
+12 -2
arch/arm/mach-exynos/clock-exynos5.c
··· 196 196 return s5p_gatectrl(EXYNOS5_CLKGATE_IP_ISP1, clk, enable); 197 197 } 198 198 199 + static int exynos5_clk_hdmiphy_ctrl(struct clk *clk, int enable) 200 + { 201 + return s5p_gatectrl(S5P_HDMI_PHY_CONTROL, clk, enable); 202 + } 203 + 199 204 /* Core list of CMU_CPU side */ 200 205 201 206 static struct clksrc_clk exynos5_clk_mout_apll = { ··· 674 669 .ctrlbit = (1 << 0), 675 670 }, { 676 671 .name = "hdmi", 677 - .devname = "exynos4-hdmi", 672 + .devname = "exynos5-hdmi", 678 673 .enable = exynos5_clk_ip_disp1_ctrl, 679 674 .ctrlbit = (1 << 6), 680 675 }, { 676 + .name = "hdmiphy", 677 + .devname = "exynos5-hdmi", 678 + .enable = exynos5_clk_hdmiphy_ctrl, 679 + .ctrlbit = (1 << 0), 680 + }, { 681 681 .name = "mixer", 682 - .devname = "s5p-mixer", 682 + .devname = "exynos5-mixer", 683 683 .enable = exynos5_clk_ip_disp1_ctrl, 684 684 .ctrlbit = (1 << 5), 685 685 }, {
-29
arch/arm/mach-exynos/dev-drm.c
··· 1 - /* 2 - * linux/arch/arm/mach-exynos/dev-drm.c 3 - * 4 - * Copyright (c) 2012 Samsung Electronics Co., Ltd. 5 - * http://www.samsung.com 6 - * 7 - * EXYNOS - core DRM device 8 - * 9 - * This program is free software; you can redistribute it and/or modify 10 - * it under the terms of the GNU General Public License as published by 11 - * the Free Software Foundation; either version 2 of the License, or 12 - * (at your option) any later version. 13 - */ 14 - 15 - #include <linux/kernel.h> 16 - #include <linux/dma-mapping.h> 17 - #include <linux/platform_device.h> 18 - 19 - #include <plat/devs.h> 20 - 21 - static u64 exynos_drm_dma_mask = DMA_BIT_MASK(32); 22 - 23 - struct platform_device exynos_device_drm = { 24 - .name = "exynos-drm", 25 - .dev = { 26 - .dma_mask = &exynos_drm_dma_mask, 27 - .coherent_dma_mask = DMA_BIT_MASK(32), 28 - } 29 - };
+8
arch/arm/mach-exynos/mach-exynos5-dt.c
··· 47 47 "s3c2440-i2c.0", NULL), 48 48 OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(1), 49 49 "s3c2440-i2c.1", NULL), 50 + OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(2), 51 + "s3c2440-i2c.2", NULL), 52 + OF_DEV_AUXDATA("samsung,s3c2440-hdmiphy-i2c", EXYNOS5_PA_IIC(8), 53 + "s3c2440-hdmiphy-i2c", NULL), 50 54 OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI0, 51 55 "dw_mmc.0", NULL), 52 56 OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI1, ··· 76 72 "exynos-gsc.2", NULL), 77 73 OF_DEV_AUXDATA("samsung,exynos5-gsc", EXYNOS5_PA_GSC3, 78 74 "exynos-gsc.3", NULL), 75 + OF_DEV_AUXDATA("samsung,exynos5-hdmi", 0x14530000, 76 + "exynos5-hdmi", NULL), 77 + OF_DEV_AUXDATA("samsung,exynos5-mixer", 0x14450000, 78 + "exynos5-mixer", NULL), 79 79 {}, 80 80 }; 81 81
-3
arch/arm/mach-exynos/mach-nuri.c
··· 1327 1327 &cam_vdda_fixed_rdev, 1328 1328 &cam_8m_12v_fixed_rdev, 1329 1329 &exynos4_bus_devfreq, 1330 - #ifdef CONFIG_DRM_EXYNOS 1331 - &exynos_device_drm, 1332 - #endif 1333 1330 }; 1334 1331 1335 1332 static void __init nuri_map_io(void)
-3
arch/arm/mach-exynos/mach-origen.c
··· 709 709 &s5p_device_mfc_l, 710 710 &s5p_device_mfc_r, 711 711 &s5p_device_mixer, 712 - #ifdef CONFIG_DRM_EXYNOS 713 - &exynos_device_drm, 714 - #endif 715 712 &exynos4_device_ohci, 716 713 &origen_device_gpiokeys, 717 714 &origen_lcd_hv070wsa,
-3
arch/arm/mach-exynos/mach-smdk4x12.c
··· 317 317 &s5p_device_mfc, 318 318 &s5p_device_mfc_l, 319 319 &s5p_device_mfc_r, 320 - #ifdef CONFIG_DRM_EXYNOS 321 - &exynos_device_drm, 322 - #endif 323 320 &samsung_device_keypad, 324 321 }; 325 322
-3
arch/arm/mach-exynos/mach-smdkv310.c
··· 300 300 &s5p_device_fimc_md, 301 301 &s5p_device_g2d, 302 302 &s5p_device_jpeg, 303 - #ifdef CONFIG_DRM_EXYNOS 304 - &exynos_device_drm, 305 - #endif 306 303 &exynos4_device_ac97, 307 304 &exynos4_device_i2s0, 308 305 &exynos4_device_ohci,
-3
arch/arm/mach-exynos/mach-universal_c210.c
··· 1081 1081 &s5p_device_onenand, 1082 1082 &s5p_device_fimd0, 1083 1083 &s5p_device_jpeg, 1084 - #ifdef CONFIG_DRM_EXYNOS 1085 - &exynos_device_drm, 1086 - #endif 1087 1084 &s3c_device_usb_hsotg, 1088 1085 &s5p_device_mfc, 1089 1086 &s5p_device_mfc_l,
-2
arch/arm/plat-samsung/include/plat/devs.h
··· 133 133 extern struct platform_device exynos4_device_pcm2; 134 134 extern struct platform_device exynos4_device_spdif; 135 135 136 - extern struct platform_device exynos_device_drm; 137 - 138 136 extern struct platform_device samsung_asoc_dma; 139 137 extern struct platform_device samsung_asoc_idma; 140 138 extern struct platform_device samsung_device_keypad;