Training courses
Kernel and Embedded Linux
Bootlin training courses
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
/* SPDX-License-Identifier: GPL-2.0-only */ /* * linux/drivers/video/acornfb.h * * Copyright (C) 1998,1999 Russell King * * Frame buffer code for Acorn platforms */ #if defined(HAS_VIDC20) #include <asm/hardware/iomd.h> #define VIDC_PALETTE_SIZE 256 #define VIDC_NAME "VIDC20" #endif #define EXTEND8(x) ((x)|(x)<<8) #define EXTEND4(x) ((x)|(x)<<4|(x)<<8|(x)<<12) struct vidc20_palette { u_int red:8; u_int green:8; u_int blue:8; u_int ext:4; u_int unused:4; }; struct vidc_palette { u_int red:4; u_int green:4; u_int blue:4; u_int trans:1; u_int sbz1:13; u_int reg:4; u_int sbz2:2; }; union palette { struct vidc20_palette vidc20; struct vidc_palette vidc; u_int p; }; struct acornfb_par { struct device *dev; unsigned long screen_end; unsigned int dram_size; unsigned int vram_half_sam; unsigned int palette_size; signed int montype; unsigned int using_vram : 1; unsigned int dpms : 1; union palette palette[VIDC_PALETTE_SIZE]; u32 pseudo_palette[16]; }; struct vidc_timing { u_int h_cycle; u_int h_sync_width; u_int h_border_start; u_int h_display_start; u_int h_display_end; u_int h_border_end; u_int h_interlace; u_int v_cycle; u_int v_sync_width; u_int v_border_start; u_int v_display_start; u_int v_display_end; u_int v_border_end; u_int control; /* VIDC20 only */ u_int pll_ctl; }; struct modey_params { u_int y_res; u_int u_margin; u_int b_margin; u_int vsync_len; u_int vf; }; struct modex_params { u_int x_res; u_int l_margin; u_int r_margin; u_int hsync_len; u_int clock; u_int hf; const struct modey_params *modey; }; #ifdef HAS_VIDC20 /* * VIDC20 registers */ #define VIDC20_CTRL 0xe0000000 #define VIDC20_CTRL_PIX_VCLK (0 << 0) #define VIDC20_CTRL_PIX_HCLK (1 << 0) #define VIDC20_CTRL_PIX_RCLK (2 << 0) #define VIDC20_CTRL_PIX_CK (0 << 2) #define VIDC20_CTRL_PIX_CK2 (1 << 2) #define VIDC20_CTRL_PIX_CK3 (2 << 2) #define VIDC20_CTRL_PIX_CK4 (3 << 2) #define VIDC20_CTRL_PIX_CK5 (4 << 2) #define VIDC20_CTRL_PIX_CK6 (5 << 2) #define VIDC20_CTRL_PIX_CK7 (6 << 2) #define VIDC20_CTRL_PIX_CK8 (7 << 2) #define VIDC20_CTRL_1BPP (0 << 5) #define VIDC20_CTRL_2BPP (1 << 5) #define VIDC20_CTRL_4BPP (2 << 5) #define VIDC20_CTRL_8BPP (3 << 5) #define VIDC20_CTRL_16BPP (4 << 5) #define VIDC20_CTRL_32BPP (6 << 5) #define VIDC20_CTRL_FIFO_NS (0 << 8) #define VIDC20_CTRL_FIFO_4 (1 << 8) #define VIDC20_CTRL_FIFO_8 (2 << 8) #define VIDC20_CTRL_FIFO_12 (3 << 8) #define VIDC20_CTRL_FIFO_16 (4 << 8) #define VIDC20_CTRL_FIFO_20 (5 << 8) #define VIDC20_CTRL_FIFO_24 (6 << 8) #define VIDC20_CTRL_FIFO_28 (7 << 8) #define VIDC20_CTRL_INT (1 << 12) #define VIDC20_CTRL_DUP (1 << 13) #define VIDC20_CTRL_PDOWN (1 << 14) #define VIDC20_ECTL 0xc0000000 #define VIDC20_ECTL_REG(x) ((x) & 0xf3) #define VIDC20_ECTL_ECK (1 << 2) #define VIDC20_ECTL_REDPED (1 << 8) #define VIDC20_ECTL_GREENPED (1 << 9) #define VIDC20_ECTL_BLUEPED (1 << 10) #define VIDC20_ECTL_DAC (1 << 12) #define VIDC20_ECTL_LCDGS (1 << 13) #define VIDC20_ECTL_HRM (1 << 14) #define VIDC20_ECTL_HS_MASK (3 << 16) #define VIDC20_ECTL_HS_HSYNC (0 << 16) #define VIDC20_ECTL_HS_NHSYNC (1 << 16) #define VIDC20_ECTL_HS_CSYNC (2 << 16) #define VIDC20_ECTL_HS_NCSYNC (3 << 16) #define VIDC20_ECTL_VS_MASK (3 << 18) #define VIDC20_ECTL_VS_VSYNC (0 << 18) #define VIDC20_ECTL_VS_NVSYNC (1 << 18) #define VIDC20_ECTL_VS_CSYNC (2 << 18) #define VIDC20_ECTL_VS_NCSYNC (3 << 18) #define VIDC20_DCTL 0xf0000000 /* 0-9 = number of words in scanline */ #define VIDC20_DCTL_SNA (1 << 12) #define VIDC20_DCTL_HDIS (1 << 13) #define VIDC20_DCTL_BUS_NS (0 << 16) #define VIDC20_DCTL_BUS_D31_0 (1 << 16) #define VIDC20_DCTL_BUS_D63_32 (2 << 16) #define VIDC20_DCTL_BUS_D63_0 (3 << 16) #define VIDC20_DCTL_VRAM_DIS (0 << 18) #define VIDC20_DCTL_VRAM_PXCLK (1 << 18) #define VIDC20_DCTL_VRAM_PXCLK2 (2 << 18) #define VIDC20_DCTL_VRAM_PXCLK4 (3 << 18) #endif