1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * shmob_drm.h -- SH Mobile DRM driver 4 * 5 * Copyright (C) 2012 Renesas Corporation 6 * 7 * Laurent Pinchart ([email protected]) 8 */ 9 10 #ifndef __SHMOB_DRM_H__ 11 #define __SHMOB_DRM_H__ 12 13 #include <drm/drm_mode.h> 14 15 enum shmob_drm_clk_source { 16 SHMOB_DRM_CLK_BUS, 17 SHMOB_DRM_CLK_PERIPHERAL, 18 SHMOB_DRM_CLK_EXTERNAL, 19 }; 20 21 enum shmob_drm_interface { 22 SHMOB_DRM_IFACE_RGB8, /* 24bpp, 8:8:8 */ 23 SHMOB_DRM_IFACE_RGB9, /* 18bpp, 9:9 */ 24 SHMOB_DRM_IFACE_RGB12A, /* 24bpp, 12:12 */ 25 SHMOB_DRM_IFACE_RGB12B, /* 12bpp */ 26 SHMOB_DRM_IFACE_RGB16, /* 16bpp */ 27 SHMOB_DRM_IFACE_RGB18, /* 18bpp */ 28 SHMOB_DRM_IFACE_RGB24, /* 24bpp */ 29 SHMOB_DRM_IFACE_YUV422, /* 16bpp */ 30 }; 31 32 struct shmob_drm_panel_data { 33 unsigned int width_mm; /* Panel width in mm */ 34 unsigned int height_mm; /* Panel height in mm */ 35 struct drm_mode_modeinfo mode; 36 }; 37 38 #define SHMOB_DRM_IFACE_FL_DWPOL (1 << 0) /* Rising edge dot clock data latch */ 39 #define SHMOB_DRM_IFACE_FL_DIPOL (1 << 1) /* Active low display enable */ 40 #define SHMOB_DRM_IFACE_FL_DAPOL (1 << 2) /* Active low display data */ 41 #define SHMOB_DRM_IFACE_FL_HSCNT (1 << 3) /* Disable HSYNC during VBLANK */ 42 #define SHMOB_DRM_IFACE_FL_DWCNT (1 << 4) /* Disable dotclock during blanking */ 43 44 struct shmob_drm_interface_data { 45 enum shmob_drm_interface interface; 46 unsigned int clk_div; 47 unsigned int flags; 48 }; 49 50 struct shmob_drm_platform_data { 51 enum shmob_drm_clk_source clk_source; 52 struct shmob_drm_interface_data iface; 53 struct shmob_drm_panel_data panel; 54 }; 55 56 #endif /* __SHMOB_DRM_H__ */ 57