Commit cf15fabd authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm/panel/for-4.7-rc1' of git://anongit.freedesktop.org/tegra/linux into drm-next

drm/panel: Changes for v4.7-rc1

This contains support for a bunch of new panels in the simple panel
driver along with some cleanup and support for a new Analogix HDMI to DP
bridge.

* tag 'drm/panel/for-4.7-rc1' of git://anongit.freedesktop.org/tegra/linux:
  drm/panel: simple: Add support for TPK U.S.A. LLC Fusion 7" and 10.1" panels
  drm/bridge: Add Analogix anx78xx support
  devicetree: Add ANX7814 SlimPort transmitter binding
  of: Add vendor prefix for Analogix Semiconductor
  drm/dp: Add define to set 0.5% down-spread in MAX_DOWNSPREAD register
  drm/panel: simple: Add support for Innolux AT070TN92
  drm/panel: simple: Remove useless drm_mode_set_name()
  drm/panel: simple: Set appropriate mode type
  drm/panel: simple: Add timings for the Olimex LCD-OLinuXino-4.3TS
  drm/panel: simple: Add the 7" DPI panel from Adafruit
  of: Add vendor prefix for On Tat Industrial Company.
parents 7d020672 227e4f40
Innolux AT070TN92 7.0" WQVGA TFT LCD panel
Required properties:
- compatible: should be "innolux,at070tn92"
This binding is compatible with the simple-panel binding, which is specified
in simple-panel.txt in this directory.
Olimex 4.3" TFT LCD panel
Required properties:
- compatible: should be "olimex,lcd-olinuxino-43-ts"
This binding is compatible with the simple-panel binding, which is specified
in simple-panel.txt in this directory.
On Tat Industrial Company 7" DPI TFT panel.
Required properties:
- compatible: should be "ontat,yx700wv03"
This binding is compatible with the simple-panel binding, which is specified
in simple-panel.txt in this directory.
TPK U.S.A. LLC Fusion 7" integrated projected capacitive touch display with,
800 x 480 (WVGA) LCD panel.
Required properties:
- compatible: should be "tpk,f07a-0102"
This binding is compatible with the simple-panel binding, which is specified
in simple-panel.txt in this directory.
TPK U.S.A. LLC Fusion 10.1" integrated projected capacitive touch display with,
1024 x 600 (WSVGA) LCD panel.
Required properties:
- compatible: should be "tpk,f10a-0102"
This binding is compatible with the simple-panel binding, which is specified
in simple-panel.txt in this directory.
...@@ -22,6 +22,7 @@ amlogic Amlogic, Inc. ...@@ -22,6 +22,7 @@ amlogic Amlogic, Inc.
ampire Ampire Co., Ltd. ampire Ampire Co., Ltd.
ams AMS AG ams AMS AG
amstaos AMS-Taos Inc. amstaos AMS-Taos Inc.
analogix Analogix Semiconductor, Inc.
apm Applied Micro Circuits Corporation (APM) apm Applied Micro Circuits Corporation (APM)
aptina Aptina Imaging aptina Aptina Imaging
arasan Arasan Chip Systems arasan Arasan Chip Systems
...@@ -172,6 +173,7 @@ nxp NXP Semiconductors ...@@ -172,6 +173,7 @@ nxp NXP Semiconductors
okaya Okaya Electric America, Inc. okaya Okaya Electric America, Inc.
olimex OLIMEX Ltd. olimex OLIMEX Ltd.
onnn ON Semiconductor Corp. onnn ON Semiconductor Corp.
ontat On Tat Industrial Company
opencores OpenCores.org opencores OpenCores.org
option Option NV option Option NV
ortustech Ortus Technology Co., Ltd. ortustech Ortus Technology Co., Ltd.
...@@ -247,6 +249,7 @@ toradex Toradex AG ...@@ -247,6 +249,7 @@ toradex Toradex AG
toshiba Toshiba Corporation toshiba Toshiba Corporation
toumaz Toumaz toumaz Toumaz
tplink TP-LINK Technologies Co., Ltd. tplink TP-LINK Technologies Co., Ltd.
tpk TPK U.S.A. LLC
tronfy Tronfy tronfy Tronfy
tronsmart Tronsmart tronsmart Tronsmart
truly Truly Semiconductors Limited truly Truly Semiconductors Limited
......
Analogix ANX7814 SlimPort (Full-HD Transmitter)
-----------------------------------------------
The ANX7814 is an ultra-low power Full-HD (1080p60) SlimPort transmitter
designed for portable devices.
Required properties:
- compatible : "analogix,anx7814"
- reg : I2C address of the device
- interrupt-parent : Should be the phandle of the interrupt controller
that services interrupts for this device
- interrupts : Should contain the INTP interrupt
- hpd-gpios : Which GPIO to use for hpd
- pd-gpios : Which GPIO to use for power down
- reset-gpios : Which GPIO to use for reset
Optional properties:
- dvdd10-supply : Regulator for 1.0V digital core power.
- Video port for HDMI input, using the DT bindings defined in [1].
[1]: Documentation/devicetree/bindings/media/video-interfaces.txt
Example:
anx7814: anx7814@38 {
compatible = "analogix,anx7814";
reg = <0x38>;
interrupt-parent = <&gpio0>;
interrupts = <99 IRQ_TYPE_LEVEL_LOW>; /* INTP */
hpd-gpios = <&pio 36 GPIO_ACTIVE_HIGH>;
pd-gpios = <&pio 33 GPIO_ACTIVE_HIGH>;
reset-gpios = <&pio 98 GPIO_ACTIVE_HIGH>;
port {
anx7814_in: endpoint {
remote-endpoint = <&hdmi0_out>;
};
};
};
...@@ -7,6 +7,16 @@ config DRM_BRIDGE ...@@ -7,6 +7,16 @@ config DRM_BRIDGE
menu "Display Interface Bridges" menu "Display Interface Bridges"
depends on DRM && DRM_BRIDGE depends on DRM && DRM_BRIDGE
config DRM_ANALOGIX_ANX78XX
tristate "Analogix ANX78XX bridge"
select DRM_KMS_HELPER
select REGMAP_I2C
---help---
ANX78XX is an ultra-low Full-HD SlimPort transmitter
designed for portable devices. The ANX78XX transforms
the HDMI output of an application processor to MyDP
or DisplayPort.
config DRM_DW_HDMI config DRM_DW_HDMI
tristate tristate
select DRM_KMS_HELPER select DRM_KMS_HELPER
......
ccflags-y := -Iinclude/drm ccflags-y := -Iinclude/drm
obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
obj-$(CONFIG_DRM_DW_HDMI) += dw-hdmi.o obj-$(CONFIG_DRM_DW_HDMI) += dw-hdmi.o
obj-$(CONFIG_DRM_DW_HDMI_AHB_AUDIO) += dw-hdmi-ahb-audio.o obj-$(CONFIG_DRM_DW_HDMI_AHB_AUDIO) += dw-hdmi-ahb-audio.o
obj-$(CONFIG_DRM_NXP_PTN3460) += nxp-ptn3460.o obj-$(CONFIG_DRM_NXP_PTN3460) += nxp-ptn3460.o
......
This diff is collapsed.
This diff is collapsed.
...@@ -117,7 +117,11 @@ static int panel_simple_get_fixed_modes(struct panel_simple *panel) ...@@ -117,7 +117,11 @@ static int panel_simple_get_fixed_modes(struct panel_simple *panel)
} }
drm_display_mode_from_videomode(&vm, mode); drm_display_mode_from_videomode(&vm, mode);
drm_mode_set_name(mode);
mode->type |= DRM_MODE_TYPE_DRIVER;
if (panel->desc->num_modes == 1)
mode->type |= DRM_MODE_TYPE_PREFERRED;
drm_mode_probed_add(connector, mode); drm_mode_probed_add(connector, mode);
num++; num++;
...@@ -133,6 +137,11 @@ static int panel_simple_get_fixed_modes(struct panel_simple *panel) ...@@ -133,6 +137,11 @@ static int panel_simple_get_fixed_modes(struct panel_simple *panel)
continue; continue;
} }
mode->type |= DRM_MODE_TYPE_DRIVER;
if (panel->desc->num_modes == 1)
mode->type |= DRM_MODE_TYPE_PREFERRED;
drm_mode_set_name(mode); drm_mode_set_name(mode);
drm_mode_probed_add(connector, mode); drm_mode_probed_add(connector, mode);
...@@ -815,6 +824,29 @@ static const struct panel_desc innolux_at043tn24 = { ...@@ -815,6 +824,29 @@ static const struct panel_desc innolux_at043tn24 = {
.bus_format = MEDIA_BUS_FMT_RGB888_1X24, .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
}; };
static const struct drm_display_mode innolux_at070tn92_mode = {
.clock = 33333,
.hdisplay = 800,
.hsync_start = 800 + 210,
.hsync_end = 800 + 210 + 20,
.htotal = 800 + 210 + 20 + 46,
.vdisplay = 480,
.vsync_start = 480 + 22,
.vsync_end = 480 + 22 + 10,
.vtotal = 480 + 22 + 23 + 10,
.vrefresh = 60,
};
static const struct panel_desc innolux_at070tn92 = {
.modes = &innolux_at070tn92_mode,
.num_modes = 1,
.size = {
.width = 154,
.height = 86,
},
.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
};
static const struct drm_display_mode innolux_g121i1_l01_mode = { static const struct drm_display_mode innolux_g121i1_l01_mode = {
.clock = 71000, .clock = 71000,
.hdisplay = 1280, .hdisplay = 1280,
...@@ -1087,6 +1119,63 @@ static const struct panel_desc okaya_rs800480t_7x0gp = { ...@@ -1087,6 +1119,63 @@ static const struct panel_desc okaya_rs800480t_7x0gp = {
.bus_format = MEDIA_BUS_FMT_RGB666_1X18, .bus_format = MEDIA_BUS_FMT_RGB666_1X18,
}; };
static const struct drm_display_mode olimex_lcd_olinuxino_43ts_mode = {
.clock = 9000,
.hdisplay = 480,
.hsync_start = 480 + 5,
.hsync_end = 480 + 5 + 30,
.htotal = 480 + 5 + 30 + 10,
.vdisplay = 272,
.vsync_start = 272 + 8,
.vsync_end = 272 + 8 + 5,
.vtotal = 272 + 8 + 5 + 3,
.vrefresh = 60,
};
static const struct panel_desc olimex_lcd_olinuxino_43ts = {
.modes = &olimex_lcd_olinuxino_43ts_mode,
.num_modes = 1,
.size = {
.width = 105,
.height = 67,
},
.bus_format = MEDIA_BUS_FMT_RGB666_1X18,
};
/*
* 800x480 CVT. The panel appears to be quite accepting, at least as far as
* pixel clocks, but this is the timing that was being used in the Adafruit
* installation instructions.
*/
static const struct drm_display_mode ontat_yx700wv03_mode = {
.clock = 29500,
.hdisplay = 800,
.hsync_start = 824,
.hsync_end = 896,
.htotal = 992,
.vdisplay = 480,
.vsync_start = 483,
.vsync_end = 493,
.vtotal = 500,
.vrefresh = 60,
.flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
};
/*
* Specification at:
* https://www.adafruit.com/images/product-files/2406/c3163.pdf
*/
static const struct panel_desc ontat_yx700wv03 = {
.modes = &ontat_yx700wv03_mode,
.num_modes = 1,
.bpc = 8,
.size = {
.width = 154,
.height = 83,
},
.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
};
static const struct drm_display_mode ortustech_com43h4m85ulc_mode = { static const struct drm_display_mode ortustech_com43h4m85ulc_mode = {
.clock = 25000, .clock = 25000,
.hdisplay = 480, .hdisplay = 480,
...@@ -1204,6 +1293,51 @@ static const struct panel_desc shelly_sca07010_bfn_lnn = { ...@@ -1204,6 +1293,51 @@ static const struct panel_desc shelly_sca07010_bfn_lnn = {
.bus_format = MEDIA_BUS_FMT_RGB666_1X18, .bus_format = MEDIA_BUS_FMT_RGB666_1X18,
}; };
static const struct drm_display_mode tpk_f07a_0102_mode = {
.clock = 33260,
.hdisplay = 800,
.hsync_start = 800 + 40,
.hsync_end = 800 + 40 + 128,
.htotal = 800 + 40 + 128 + 88,
.vdisplay = 480,
.vsync_start = 480 + 10,
.vsync_end = 480 + 10 + 2,
.vtotal = 480 + 10 + 2 + 33,
.vrefresh = 60,
};
static const struct panel_desc tpk_f07a_0102 = {
.modes = &tpk_f07a_0102_mode,
.num_modes = 1,
.size = {
.width = 152,
.height = 91,
},
.bus_flags = DRM_BUS_FLAG_PIXDATA_POSEDGE,
};
static const struct drm_display_mode tpk_f10a_0102_mode = {
.clock = 45000,
.hdisplay = 1024,
.hsync_start = 1024 + 176,
.hsync_end = 1024 + 176 + 5,
.htotal = 1024 + 176 + 5 + 88,
.vdisplay = 600,
.vsync_start = 600 + 20,
.vsync_end = 600 + 20 + 5,
.vtotal = 600 + 20 + 5 + 25,
.vrefresh = 60,
};
static const struct panel_desc tpk_f10a_0102 = {
.modes = &tpk_f10a_0102_mode,
.num_modes = 1,
.size = {
.width = 223,
.height = 125,
},
};
static const struct display_timing urt_umsh_8596md_timing = { static const struct display_timing urt_umsh_8596md_timing = {
.pixelclock = { 33260000, 33260000, 33260000 }, .pixelclock = { 33260000, 33260000, 33260000 },
.hactive = { 800, 800, 800 }, .hactive = { 800, 800, 800 },
...@@ -1298,6 +1432,9 @@ static const struct of_device_id platform_of_match[] = { ...@@ -1298,6 +1432,9 @@ static const struct of_device_id platform_of_match[] = {
}, { }, {
.compatible = "innolux,at043tn24", .compatible = "innolux,at043tn24",
.data = &innolux_at043tn24, .data = &innolux_at043tn24,
}, {
.compatible = "innolux,at070tn92",
.data = &innolux_at070tn92,
}, { }, {
.compatible ="innolux,g121i1-l01", .compatible ="innolux,g121i1-l01",
.data = &innolux_g121i1_l01 .data = &innolux_g121i1_l01
...@@ -1331,6 +1468,12 @@ static const struct of_device_id platform_of_match[] = { ...@@ -1331,6 +1468,12 @@ static const struct of_device_id platform_of_match[] = {
}, { }, {
.compatible = "okaya,rs800480t-7x0gp", .compatible = "okaya,rs800480t-7x0gp",
.data = &okaya_rs800480t_7x0gp, .data = &okaya_rs800480t_7x0gp,
}, {
.compatible = "olimex,lcd-olinuxino-43-ts",
.data = &olimex_lcd_olinuxino_43ts,
}, {
.compatible = "ontat,yx700wv03",
.data = &ontat_yx700wv03,
}, { }, {
.compatible = "ortustech,com43h4m85ulc", .compatible = "ortustech,com43h4m85ulc",
.data = &ortustech_com43h4m85ulc, .data = &ortustech_com43h4m85ulc,
...@@ -1346,6 +1489,12 @@ static const struct of_device_id platform_of_match[] = { ...@@ -1346,6 +1489,12 @@ static const struct of_device_id platform_of_match[] = {
}, { }, {
.compatible = "shelly,sca07010-bfn-lnn", .compatible = "shelly,sca07010-bfn-lnn",
.data = &shelly_sca07010_bfn_lnn, .data = &shelly_sca07010_bfn_lnn,
}, {
.compatible = "tpk,f07a-0102",
.data = &tpk_f07a_0102,
}, {
.compatible = "tpk,f10a-0102",
.data = &tpk_f10a_0102,
}, { }, {
.compatible = "urt,umsh-8596md-t", .compatible = "urt,umsh-8596md-t",
.data = &urt_umsh_8596md_parallel, .data = &urt_umsh_8596md_parallel,
......
...@@ -73,6 +73,7 @@ ...@@ -73,6 +73,7 @@
# define DP_ENHANCED_FRAME_CAP (1 << 7) # define DP_ENHANCED_FRAME_CAP (1 << 7)
#define DP_MAX_DOWNSPREAD 0x003 #define DP_MAX_DOWNSPREAD 0x003
# define DP_MAX_DOWNSPREAD_0_5 (1 << 0)
# define DP_NO_AUX_HANDSHAKE_LINK_TRAINING (1 << 6) # define DP_NO_AUX_HANDSHAKE_LINK_TRAINING (1 << 6)
#define DP_NORP 0x004 #define DP_NORP 0x004
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment