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