xref: /openbmc/linux/arch/arm/mach-ep93xx/ts72xx.h (revision 552c69b36ebd966186573b9c7a286b390935cce1)
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 Mallon static 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 Mallon static 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 Mallon static 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 Mallon static 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 Mallon static 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 Mallon static 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 Mallon static 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 Mallon static 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