18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> 48c2ecf20Sopenharmony_ci * http://www.simtec.co.uk/products/SWLINUX/ 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef ___ASM_ARCH_REGS_LCD_H 88c2ecf20Sopenharmony_ci#define ___ASM_ARCH_REGS_LCD_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci/* 118c2ecf20Sopenharmony_ci * a couple of values are used as platform data in 128c2ecf20Sopenharmony_ci * include/linux/platform_data/fb-s3c2410.h and not 138c2ecf20Sopenharmony_ci * duplicated here. 148c2ecf20Sopenharmony_ci */ 158c2ecf20Sopenharmony_ci#include <linux/platform_data/fb-s3c2410.h> 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci#define S3C2410_LCDREG(x) (x) 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci/* LCD control registers */ 208c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1 S3C2410_LCDREG(0x00) 218c2ecf20Sopenharmony_ci#define S3C2410_LCDCON2 S3C2410_LCDREG(0x04) 228c2ecf20Sopenharmony_ci#define S3C2410_LCDCON3 S3C2410_LCDREG(0x08) 238c2ecf20Sopenharmony_ci#define S3C2410_LCDCON4 S3C2410_LCDREG(0x0C) 248c2ecf20Sopenharmony_ci#define S3C2410_LCDCON5 S3C2410_LCDREG(0x10) 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_CLKVAL(x) ((x) << 8) 278c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_MMODE (1<<7) 288c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_DSCAN4 (0<<5) 298c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_STN4 (1<<5) 308c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_STN8 (2<<5) 318c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_TFT (3<<5) 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_STN1BPP (0<<1) 348c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_STN2GREY (1<<1) 358c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_STN4GREY (2<<1) 368c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_STN8BPP (3<<1) 378c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_STN12BPP (4<<1) 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_ENVID (1) 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci#define S3C2410_LCDCON1_MODEMASK 0x1E 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci#define S3C2410_LCDCON2_VBPD(x) ((x) << 24) 448c2ecf20Sopenharmony_ci#define S3C2410_LCDCON2_LINEVAL(x) ((x) << 14) 458c2ecf20Sopenharmony_ci#define S3C2410_LCDCON2_VFPD(x) ((x) << 6) 468c2ecf20Sopenharmony_ci#define S3C2410_LCDCON2_VSPW(x) ((x) << 0) 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci#define S3C2410_LCDCON2_GET_VBPD(x) ( ((x) >> 24) & 0xFF) 498c2ecf20Sopenharmony_ci#define S3C2410_LCDCON2_GET_VFPD(x) ( ((x) >> 6) & 0xFF) 508c2ecf20Sopenharmony_ci#define S3C2410_LCDCON2_GET_VSPW(x) ( ((x) >> 0) & 0x3F) 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci#define S3C2410_LCDCON3_HBPD(x) ((x) << 19) 538c2ecf20Sopenharmony_ci#define S3C2410_LCDCON3_WDLY(x) ((x) << 19) 548c2ecf20Sopenharmony_ci#define S3C2410_LCDCON3_HOZVAL(x) ((x) << 8) 558c2ecf20Sopenharmony_ci#define S3C2410_LCDCON3_HFPD(x) ((x) << 0) 568c2ecf20Sopenharmony_ci#define S3C2410_LCDCON3_LINEBLANK(x)((x) << 0) 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci#define S3C2410_LCDCON3_GET_HBPD(x) ( ((x) >> 19) & 0x7F) 598c2ecf20Sopenharmony_ci#define S3C2410_LCDCON3_GET_HFPD(x) ( ((x) >> 0) & 0xFF) 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci/* LDCCON4 changes for STN mode on the S3C2412 */ 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci#define S3C2410_LCDCON4_MVAL(x) ((x) << 8) 648c2ecf20Sopenharmony_ci#define S3C2410_LCDCON4_HSPW(x) ((x) << 0) 658c2ecf20Sopenharmony_ci#define S3C2410_LCDCON4_WLH(x) ((x) << 0) 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci#define S3C2410_LCDCON4_GET_HSPW(x) ( ((x) >> 0) & 0xFF) 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci/* framebuffer start addressed */ 708c2ecf20Sopenharmony_ci#define S3C2410_LCDSADDR1 S3C2410_LCDREG(0x14) 718c2ecf20Sopenharmony_ci#define S3C2410_LCDSADDR2 S3C2410_LCDREG(0x18) 728c2ecf20Sopenharmony_ci#define S3C2410_LCDSADDR3 S3C2410_LCDREG(0x1C) 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci#define S3C2410_LCDBANK(x) ((x) << 21) 758c2ecf20Sopenharmony_ci#define S3C2410_LCDBASEU(x) (x) 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci#define S3C2410_OFFSIZE(x) ((x) << 11) 788c2ecf20Sopenharmony_ci#define S3C2410_PAGEWIDTH(x) (x) 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci/* colour lookup and miscellaneous controls */ 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci#define S3C2410_REDLUT S3C2410_LCDREG(0x20) 838c2ecf20Sopenharmony_ci#define S3C2410_GREENLUT S3C2410_LCDREG(0x24) 848c2ecf20Sopenharmony_ci#define S3C2410_BLUELUT S3C2410_LCDREG(0x28) 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci#define S3C2410_DITHMODE S3C2410_LCDREG(0x4C) 878c2ecf20Sopenharmony_ci#define S3C2410_TPAL S3C2410_LCDREG(0x50) 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci#define S3C2410_TPAL_EN (1<<24) 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci/* interrupt info */ 928c2ecf20Sopenharmony_ci#define S3C2410_LCDINTPND S3C2410_LCDREG(0x54) 938c2ecf20Sopenharmony_ci#define S3C2410_LCDSRCPND S3C2410_LCDREG(0x58) 948c2ecf20Sopenharmony_ci#define S3C2410_LCDINTMSK S3C2410_LCDREG(0x5C) 958c2ecf20Sopenharmony_ci#define S3C2410_LCDINT_FIWSEL (1<<2) 968c2ecf20Sopenharmony_ci#define S3C2410_LCDINT_FRSYNC (1<<1) 978c2ecf20Sopenharmony_ci#define S3C2410_LCDINT_FICNT (1<<0) 988c2ecf20Sopenharmony_ci 998c2ecf20Sopenharmony_ci/* s3c2442 extra stn registers */ 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ci#define S3C2442_REDLUT S3C2410_LCDREG(0x20) 1028c2ecf20Sopenharmony_ci#define S3C2442_GREENLUT S3C2410_LCDREG(0x24) 1038c2ecf20Sopenharmony_ci#define S3C2442_BLUELUT S3C2410_LCDREG(0x28) 1048c2ecf20Sopenharmony_ci#define S3C2442_DITHMODE S3C2410_LCDREG(0x20) 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci#define S3C2410_LPCSEL S3C2410_LCDREG(0x60) 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci#define S3C2410_TFTPAL(x) S3C2410_LCDREG((0x400 + (x)*4)) 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_ci/* S3C2412 registers */ 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci#define S3C2412_TPAL S3C2410_LCDREG(0x20) 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ci#define S3C2412_LCDINTPND S3C2410_LCDREG(0x24) 1158c2ecf20Sopenharmony_ci#define S3C2412_LCDSRCPND S3C2410_LCDREG(0x28) 1168c2ecf20Sopenharmony_ci#define S3C2412_LCDINTMSK S3C2410_LCDREG(0x2C) 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci#define S3C2412_TCONSEL S3C2410_LCDREG(0x30) 1198c2ecf20Sopenharmony_ci 1208c2ecf20Sopenharmony_ci#define S3C2412_LCDCON6 S3C2410_LCDREG(0x34) 1218c2ecf20Sopenharmony_ci#define S3C2412_LCDCON7 S3C2410_LCDREG(0x38) 1228c2ecf20Sopenharmony_ci#define S3C2412_LCDCON8 S3C2410_LCDREG(0x3C) 1238c2ecf20Sopenharmony_ci#define S3C2412_LCDCON9 S3C2410_LCDREG(0x40) 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci#define S3C2412_REDLUT(x) S3C2410_LCDREG(0x44 + ((x)*4)) 1268c2ecf20Sopenharmony_ci#define S3C2412_GREENLUT(x) S3C2410_LCDREG(0x60 + ((x)*4)) 1278c2ecf20Sopenharmony_ci#define S3C2412_BLUELUT(x) S3C2410_LCDREG(0x98 + ((x)*4)) 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_ci#define S3C2412_FRCPAT(x) S3C2410_LCDREG(0xB4 + ((x)*4)) 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci/* general registers */ 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_ci/* base of the LCD registers, where INTPND, INTSRC and then INTMSK 1348c2ecf20Sopenharmony_ci * are available. */ 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ci#define S3C2410_LCDINTBASE S3C2410_LCDREG(0x54) 1378c2ecf20Sopenharmony_ci#define S3C2412_LCDINTBASE S3C2410_LCDREG(0x24) 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci#define S3C24XX_LCDINTPND (0x00) 1408c2ecf20Sopenharmony_ci#define S3C24XX_LCDSRCPND (0x04) 1418c2ecf20Sopenharmony_ci#define S3C24XX_LCDINTMSK (0x08) 1428c2ecf20Sopenharmony_ci 1438c2ecf20Sopenharmony_ci#endif /* ___ASM_ARCH_REGS_LCD_H */ 144