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