1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * arch/arm/mach-ep93xx/include/mach/ts72xx.h 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun /* 7*4882a593Smuzhiyun * TS72xx memory map: 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * virt phys size 10*4882a593Smuzhiyun * febff000 22000000 4K model number register (bits 0-2) 11*4882a593Smuzhiyun * febfe000 22400000 4K options register 12*4882a593Smuzhiyun * febfd000 22800000 4K options register #2 13*4882a593Smuzhiyun * febfc000 23400000 4K CPLD version register 14*4882a593Smuzhiyun */ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #ifndef __TS72XX_H_ 17*4882a593Smuzhiyun #define __TS72XX_H_ 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #define TS72XX_MODEL_PHYS_BASE 0x22000000 20*4882a593Smuzhiyun #define TS72XX_MODEL_VIRT_BASE IOMEM(0xfebff000) 21*4882a593Smuzhiyun #define TS72XX_MODEL_SIZE 0x00001000 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #define TS72XX_MODEL_TS7200 0x00 24*4882a593Smuzhiyun #define TS72XX_MODEL_TS7250 0x01 25*4882a593Smuzhiyun #define TS72XX_MODEL_TS7260 0x02 26*4882a593Smuzhiyun #define TS72XX_MODEL_TS7300 0x03 27*4882a593Smuzhiyun #define TS72XX_MODEL_TS7400 0x04 28*4882a593Smuzhiyun #define TS72XX_MODEL_MASK 0x07 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #define TS72XX_OPTIONS_PHYS_BASE 0x22400000 32*4882a593Smuzhiyun #define TS72XX_OPTIONS_VIRT_BASE IOMEM(0xfebfe000) 33*4882a593Smuzhiyun #define TS72XX_OPTIONS_SIZE 0x00001000 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #define TS72XX_OPTIONS_COM2_RS485 0x02 36*4882a593Smuzhiyun #define TS72XX_OPTIONS_MAX197 0x01 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #define TS72XX_OPTIONS2_PHYS_BASE 0x22800000 40*4882a593Smuzhiyun #define TS72XX_OPTIONS2_VIRT_BASE IOMEM(0xfebfd000) 41*4882a593Smuzhiyun #define TS72XX_OPTIONS2_SIZE 0x00001000 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #define TS72XX_OPTIONS2_TS9420 0x04 44*4882a593Smuzhiyun #define TS72XX_OPTIONS2_TS9420_BOOT 0x02 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun #define TS72XX_CPLDVER_PHYS_BASE 0x23400000 47*4882a593Smuzhiyun #define TS72XX_CPLDVER_VIRT_BASE IOMEM(0xfebfc000) 48*4882a593Smuzhiyun #define TS72XX_CPLDVER_SIZE 0x00001000 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #ifndef __ASSEMBLY__ 51*4882a593Smuzhiyun ts72xx_model(void)52*4882a593Smuzhiyunstatic inline int ts72xx_model(void) 53*4882a593Smuzhiyun { 54*4882a593Smuzhiyun return __raw_readb(TS72XX_MODEL_VIRT_BASE) & TS72XX_MODEL_MASK; 55*4882a593Smuzhiyun } 56*4882a593Smuzhiyun board_is_ts7200(void)57*4882a593Smuzhiyunstatic inline int board_is_ts7200(void) 58*4882a593Smuzhiyun { 59*4882a593Smuzhiyun return ts72xx_model() == TS72XX_MODEL_TS7200; 60*4882a593Smuzhiyun } 61*4882a593Smuzhiyun board_is_ts7250(void)62*4882a593Smuzhiyunstatic inline int board_is_ts7250(void) 63*4882a593Smuzhiyun { 64*4882a593Smuzhiyun return ts72xx_model() == TS72XX_MODEL_TS7250; 65*4882a593Smuzhiyun } 66*4882a593Smuzhiyun board_is_ts7260(void)67*4882a593Smuzhiyunstatic inline int board_is_ts7260(void) 68*4882a593Smuzhiyun { 69*4882a593Smuzhiyun return ts72xx_model() == TS72XX_MODEL_TS7260; 70*4882a593Smuzhiyun } 71*4882a593Smuzhiyun board_is_ts7300(void)72*4882a593Smuzhiyunstatic inline int board_is_ts7300(void) 73*4882a593Smuzhiyun { 74*4882a593Smuzhiyun return ts72xx_model() == TS72XX_MODEL_TS7300; 75*4882a593Smuzhiyun } 76*4882a593Smuzhiyun board_is_ts7400(void)77*4882a593Smuzhiyunstatic inline int board_is_ts7400(void) 78*4882a593Smuzhiyun { 79*4882a593Smuzhiyun return ts72xx_model() == TS72XX_MODEL_TS7400; 80*4882a593Smuzhiyun } 81*4882a593Smuzhiyun is_max197_installed(void)82*4882a593Smuzhiyunstatic inline int is_max197_installed(void) 83*4882a593Smuzhiyun { 84*4882a593Smuzhiyun return !!(__raw_readb(TS72XX_OPTIONS_VIRT_BASE) & 85*4882a593Smuzhiyun TS72XX_OPTIONS_MAX197); 86*4882a593Smuzhiyun } 87*4882a593Smuzhiyun is_ts9420_installed(void)88*4882a593Smuzhiyunstatic inline int is_ts9420_installed(void) 89*4882a593Smuzhiyun { 90*4882a593Smuzhiyun return !!(__raw_readb(TS72XX_OPTIONS2_VIRT_BASE) & 91*4882a593Smuzhiyun TS72XX_OPTIONS2_TS9420); 92*4882a593Smuzhiyun } 93*4882a593Smuzhiyun #endif 94*4882a593Smuzhiyun #endif /* __TS72XX_H_ */ 95