at v5.4 2.6 kB view raw
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 (laurent.pinchart@ideasonboard.com) 8 */ 9 10#ifndef __SHMOB_DRM_H__ 11#define __SHMOB_DRM_H__ 12 13#include <linux/kernel.h> 14 15#include <drm/drm_mode.h> 16 17enum shmob_drm_clk_source { 18 SHMOB_DRM_CLK_BUS, 19 SHMOB_DRM_CLK_PERIPHERAL, 20 SHMOB_DRM_CLK_EXTERNAL, 21}; 22 23enum shmob_drm_interface { 24 SHMOB_DRM_IFACE_RGB8, /* 24bpp, 8:8:8 */ 25 SHMOB_DRM_IFACE_RGB9, /* 18bpp, 9:9 */ 26 SHMOB_DRM_IFACE_RGB12A, /* 24bpp, 12:12 */ 27 SHMOB_DRM_IFACE_RGB12B, /* 12bpp */ 28 SHMOB_DRM_IFACE_RGB16, /* 16bpp */ 29 SHMOB_DRM_IFACE_RGB18, /* 18bpp */ 30 SHMOB_DRM_IFACE_RGB24, /* 24bpp */ 31 SHMOB_DRM_IFACE_YUV422, /* 16bpp */ 32 SHMOB_DRM_IFACE_SYS8A, /* 24bpp, 8:8:8 */ 33 SHMOB_DRM_IFACE_SYS8B, /* 18bpp, 8:8:2 */ 34 SHMOB_DRM_IFACE_SYS8C, /* 18bpp, 2:8:8 */ 35 SHMOB_DRM_IFACE_SYS8D, /* 16bpp, 8:8 */ 36 SHMOB_DRM_IFACE_SYS9, /* 18bpp, 9:9 */ 37 SHMOB_DRM_IFACE_SYS12, /* 24bpp, 12:12 */ 38 SHMOB_DRM_IFACE_SYS16A, /* 16bpp */ 39 SHMOB_DRM_IFACE_SYS16B, /* 18bpp, 16:2 */ 40 SHMOB_DRM_IFACE_SYS16C, /* 18bpp, 2:16 */ 41 SHMOB_DRM_IFACE_SYS18, /* 18bpp */ 42 SHMOB_DRM_IFACE_SYS24, /* 24bpp */ 43}; 44 45struct shmob_drm_backlight_data { 46 const char *name; 47 int max_brightness; 48 int (*get_brightness)(void); 49 int (*set_brightness)(int brightness); 50}; 51 52struct shmob_drm_panel_data { 53 unsigned int width_mm; /* Panel width in mm */ 54 unsigned int height_mm; /* Panel height in mm */ 55 struct drm_mode_modeinfo mode; 56}; 57 58struct shmob_drm_sys_interface_data { 59 unsigned int read_latch:6; 60 unsigned int read_setup:8; 61 unsigned int read_cycle:8; 62 unsigned int read_strobe:8; 63 unsigned int write_setup:8; 64 unsigned int write_cycle:8; 65 unsigned int write_strobe:8; 66 unsigned int cs_setup:3; 67 unsigned int vsync_active_high:1; 68 unsigned int vsync_dir_input:1; 69}; 70 71#define SHMOB_DRM_IFACE_FL_DWPOL (1 << 0) /* Rising edge dot clock data latch */ 72#define SHMOB_DRM_IFACE_FL_DIPOL (1 << 1) /* Active low display enable */ 73#define SHMOB_DRM_IFACE_FL_DAPOL (1 << 2) /* Active low display data */ 74#define SHMOB_DRM_IFACE_FL_HSCNT (1 << 3) /* Disable HSYNC during VBLANK */ 75#define SHMOB_DRM_IFACE_FL_DWCNT (1 << 4) /* Disable dotclock during blanking */ 76 77struct shmob_drm_interface_data { 78 enum shmob_drm_interface interface; 79 struct shmob_drm_sys_interface_data sys; 80 unsigned int clk_div; 81 unsigned int flags; 82}; 83 84struct shmob_drm_platform_data { 85 enum shmob_drm_clk_source clk_source; 86 struct shmob_drm_interface_data iface; 87 struct shmob_drm_panel_data panel; 88 struct shmob_drm_backlight_data backlight; 89}; 90 91#endif /* __SHMOB_DRM_H__ */