diff options
| author | Dave Airlie <airlied@redhat.com> | 2015-01-20 19:17:16 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2015-01-20 19:17:16 -0500 |
| commit | fc83975348ebce07793e6b9f780edc3cbcffa9fc (patch) | |
| tree | 0fc7972c181cebed1c344852bb8b1a96607d3b15 /include/drm | |
| parent | b2eb0489809cf0b824357b6fa85aab1aabe3f063 (diff) | |
| parent | d50141d8072e5322ee0518a8c967b5c9caf463d2 (diff) | |
Merge tag 'imx-drm-next-2015-01-09' of git://git.pengutronix.de/git/pza/linux into drm-next
imx-drm mode fixup support, imx-hdmi bridge conversion and imx-drm cleanup
- Implement mode_fixup for a DI vertical timing limitation
- Use generic DRM OF helpers in DRM core
- Convert imx-hdmi to dw_hdmi drm_bridge and add rockchip
driver
- Add DC use counter to fix multi-display support
- Simplify handling of DI clock flags
- A few small fixes and cleanup
* tag 'imx-drm-next-2015-01-09' of git://git.pengutronix.de/git/pza/linux: (26 commits)
imx-drm: core: handling of DI clock flags to ipu_crtc_mode_set()
gpu: ipu-di: Switch to DIV_ROUND_CLOSEST for DI clock divider calc
gpu: ipu-v3: Use videomode in struct ipu_di_signal_cfg
imx-drm: encoder prepare/mode_set must use adjusted mode
imx-drm: ipuv3-crtc: Implement mode_fixup
drm_modes: add drm_display_mode_to_videomode
gpu: ipu-di: remove some non-functional code
gpu: ipu-di: Add ipu_di_adjust_videomode()
drm: rockchip: export functions needed by rockchip dw_hdmi bridge driver
drm: bridge/dw_hdmi: request interrupt only after initializing the mutes
drm: bridge/dw_hdmi: add rockchip rk3288 support
dt-bindings: Add documentation for rockchip dw hdmi
drm: bridge/dw_hdmi: add function dw_hdmi_phy_enable_spare
drm: bridge/dw_hdmi: clear i2cmphy_stat0 reg in hdmi_phy_wait_i2c_done
drm: bridge/dw_hdmi: add mode_valid support
drm: bridge/dw_hdmi: add support for multi-byte register width access
dt-bindings: add document for dw_hdmi
drm: imx: imx-hdmi: move imx-hdmi to bridge/dw_hdmi
drm: imx: imx-hdmi: split phy configuration to platform driver
drm: imx: imx-hdmi: convert imx-hdmi to drm_bridge mode
...
Diffstat (limited to 'include/drm')
| -rw-r--r-- | include/drm/bridge/dw_hdmi.h | 61 | ||||
| -rw-r--r-- | include/drm/drm_modes.h | 2 |
2 files changed, 63 insertions, 0 deletions
diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h new file mode 100644 index 000000000000..5a4f49005169 --- /dev/null +++ b/include/drm/bridge/dw_hdmi.h | |||
| @@ -0,0 +1,61 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2011 Freescale Semiconductor, Inc. | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License as published by | ||
| 6 | * the Free Software Foundation; either version 2 of the License, or | ||
| 7 | * (at your option) any later version. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __DW_HDMI__ | ||
| 11 | #define __DW_HDMI__ | ||
| 12 | |||
| 13 | #include <drm/drmP.h> | ||
| 14 | |||
| 15 | enum { | ||
| 16 | DW_HDMI_RES_8, | ||
| 17 | DW_HDMI_RES_10, | ||
| 18 | DW_HDMI_RES_12, | ||
| 19 | DW_HDMI_RES_MAX, | ||
| 20 | }; | ||
| 21 | |||
| 22 | enum dw_hdmi_devtype { | ||
| 23 | IMX6Q_HDMI, | ||
| 24 | IMX6DL_HDMI, | ||
| 25 | RK3288_HDMI, | ||
| 26 | }; | ||
| 27 | |||
| 28 | struct dw_hdmi_mpll_config { | ||
| 29 | unsigned long mpixelclock; | ||
| 30 | struct { | ||
| 31 | u16 cpce; | ||
| 32 | u16 gmp; | ||
| 33 | } res[DW_HDMI_RES_MAX]; | ||
| 34 | }; | ||
| 35 | |||
| 36 | struct dw_hdmi_curr_ctrl { | ||
| 37 | unsigned long mpixelclock; | ||
| 38 | u16 curr[DW_HDMI_RES_MAX]; | ||
| 39 | }; | ||
| 40 | |||
| 41 | struct dw_hdmi_sym_term { | ||
| 42 | unsigned long mpixelclock; | ||
| 43 | u16 sym_ctr; /*clock symbol and transmitter control*/ | ||
| 44 | u16 term; /*transmission termination value*/ | ||
| 45 | }; | ||
| 46 | |||
| 47 | struct dw_hdmi_plat_data { | ||
| 48 | enum dw_hdmi_devtype dev_type; | ||
| 49 | const struct dw_hdmi_mpll_config *mpll_cfg; | ||
| 50 | const struct dw_hdmi_curr_ctrl *cur_ctr; | ||
| 51 | const struct dw_hdmi_sym_term *sym_term; | ||
| 52 | enum drm_mode_status (*mode_valid)(struct drm_connector *connector, | ||
| 53 | struct drm_display_mode *mode); | ||
| 54 | }; | ||
| 55 | |||
| 56 | void dw_hdmi_unbind(struct device *dev, struct device *master, void *data); | ||
| 57 | int dw_hdmi_bind(struct device *dev, struct device *master, | ||
| 58 | void *data, struct drm_encoder *encoder, | ||
| 59 | struct resource *iores, int irq, | ||
| 60 | const struct dw_hdmi_plat_data *plat_data); | ||
| 61 | #endif /* __IMX_HDMI_H__ */ | ||
diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h index b162ccd321f3..d92f6dd1fb11 100644 --- a/include/drm/drm_modes.h +++ b/include/drm/drm_modes.h | |||
| @@ -200,6 +200,8 @@ struct drm_display_mode *drm_gtf_mode_complex(struct drm_device *dev, | |||
| 200 | int GTF_K, int GTF_2J); | 200 | int GTF_K, int GTF_2J); |
| 201 | void drm_display_mode_from_videomode(const struct videomode *vm, | 201 | void drm_display_mode_from_videomode(const struct videomode *vm, |
| 202 | struct drm_display_mode *dmode); | 202 | struct drm_display_mode *dmode); |
| 203 | void drm_display_mode_to_videomode(const struct drm_display_mode *dmode, | ||
| 204 | struct videomode *vm); | ||
| 203 | int of_get_drm_display_mode(struct device_node *np, | 205 | int of_get_drm_display_mode(struct device_node *np, |
| 204 | struct drm_display_mode *dmode, | 206 | struct drm_display_mode *dmode, |
| 205 | int index); | 207 | int index); |
