FreeCalypso > hg > ffs-editor
comparison src/cs/system/bootloader/inc/target.h @ 0:92470e5d0b9e
src: partial import from FC Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 15 May 2020 01:28:16 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:92470e5d0b9e |
---|---|
1 /****************************************************************************** | |
2 * FLUID (Flash Loader Utility Independent of Device) | |
3 * | |
4 * (C) Delta Technologies 2001. | |
5 * Cleanup, modifications and extensions by Mads Meisner-Jensen, mmj@ti.com. | |
6 * | |
7 * Target common definitions | |
8 * | |
9 * $Id: target.h,v 1.3 2003/07/10 17:50:21 rlendenmann Exp $ | |
10 * | |
11 ******************************************************************************/ | |
12 #ifndef __TARGET_H__ | |
13 #define __TARGET_H__ | |
14 #include "protocol.h" | |
15 | |
16 | |
17 /****************************************************************************** | |
18 * Typedefs and Prototypes | |
19 ******************************************************************************/ | |
20 | |
21 #ifndef RIVIERA_INCLUDED | |
22 typedef unsigned char UBYTE; | |
23 typedef unsigned short UINT16; | |
24 typedef unsigned long UINT32; | |
25 typedef signed char INT8; | |
26 typedef signed short INT16; | |
27 typedef signed long INT32; | |
28 #endif | |
29 | |
30 typedef unsigned char uint8; | |
31 typedef unsigned short uint16; | |
32 typedef unsigned long uint32; | |
33 typedef signed char int8; | |
34 typedef signed short int16; | |
35 typedef signed long int32; | |
36 | |
37 typedef union { | |
38 UINT32 i; // integer value | |
39 UBYTE b[4]; // byte array | |
40 } union32_t; | |
41 | |
42 typedef union { | |
43 UINT16 i; // integer value | |
44 UBYTE b[2]; // byte array | |
45 } union16_t; | |
46 | |
47 typedef struct { | |
48 char (*init)(uint32 addr); | |
49 char (*erase)(uint32 *addr, int size); | |
50 char (*program)(uint32 addr, uint16 *buf, int size); | |
51 uint8 (*getchar)(void); | |
52 void (*putchar)(uint8 ch); | |
53 void (*debug_putstr)(uint32 uart, char *string); | |
54 void (*debug_putnum)(uint32 uart, unsigned int number); | |
55 uint32 uart_base; | |
56 } method_table_t; | |
57 | |
58 // Prototypes for functions in debug.c | |
59 void debug_putstr(uint32 uart, char *string); | |
60 void debug_putnum(uint32 uart, unsigned int number); | |
61 | |
62 | |
63 /****************************************************************************** | |
64 * Macros | |
65 ******************************************************************************/ | |
66 | |
67 #define REGISTER_8_READ(addr) (*((volatile uint8 *) (addr))) | |
68 #define REGISTER_8_WRITE(addr, data) (*((volatile uint8 *) (addr)) = data) | |
69 #define REGISTER_16_READ(addr) (*((volatile uint16 *) (addr))) | |
70 #define REGISTER_16_WRITE(addr, data) (*((volatile uint16 *) (addr)) = data) | |
71 | |
72 #define BIT_SET(reg, bit) (*((volatile UINT16 *) (reg)) |= (1 << (bit))) | |
73 #define BIT_CLR(reg, bit) (*((volatile UINT16 *) (reg)) &= ~(1 << (bit))) | |
74 | |
75 #define FLASH_READ(addr) (*(volatile uint16 *) (addr)) | |
76 #define FLASH_WRITE(addr, data) (*(volatile uint16 *) (addr)) = data | |
77 | |
78 #define PUTCHAR_FUNCTION_CODE(uart) \ | |
79 while (!(REGISTER_8_READ(uart + UART_LSR) & STAT_TXRDY)) ; \ | |
80 REGISTER_8_WRITE(uart + UART_THR, ch); | |
81 | |
82 #define GETCHAR_FUNCTION_CODE(uart) \ | |
83 while (!(REGISTER_8_READ(uart + UART_LSR) & STAT_RXRDY)) ; \ | |
84 return (uint8) REGISTER_8_READ(uart + UART_RHR); | |
85 | |
86 | |
87 /****************************************************************************** | |
88 * Debug Macros | |
89 ******************************************************************************/ | |
90 | |
91 #define DEBUG_PUTSTR(uart, text) ((method_table_t *)(my_addr))->debug_putstr(uart, text); | |
92 #define DEBUG_PUTNUM(uart, num) ((method_table_t *)(my_addr))->debug_putnum(uart, num); | |
93 | |
94 | |
95 /****************************************************************************** | |
96 * Hardware Definitions | |
97 ******************************************************************************/ | |
98 | |
99 #define UART_BASE_MODEM (0xFFFF5800) | |
100 #define UART_BASE_IRDA (0xFFFF5000) | |
101 | |
102 // ROM/Flash Config register | |
103 #define WS_REG_ROM 0x400000 | |
104 | |
105 // UART register definitions. | |
106 #define UART_RHR (0x00) /* Receive Holding Register */ | |
107 #define UART_THR (0x00) /* Transmit Holding Register */ | |
108 #define UART_FCR (0x02) /* FIFO Control Register */ | |
109 #define UART_LCR (0x03) /* Line Control Register */ | |
110 #define UART_LSR (0x05) /* Line Status Register */ | |
111 #define UART_MDR1 (0x08) /* Mode Definition Register 1 */ | |
112 #define UART_EFR (0x02) /* Enhanced Feature Register */ | |
113 #define UART_DLL (0x00) /* Divisor Latches */ | |
114 #define UART_DLH (0x01) /* Divisor Latches */ | |
115 #define UART_UIR (0xFFFF6000) /* UART Interface Register */ | |
116 | |
117 // UART status bit definitions. | |
118 #define STAT_RXRDY (0x01) | |
119 #define STAT_TXRDY (0x20) | |
120 #define STAT_TX_E (0x40) | |
121 | |
122 // UART_UIR bit definitions. | |
123 #define UART_ACCESS (0) | |
124 #define UART_MASK_IT (1) | |
125 | |
126 // UART_EFR bit definitions. | |
127 #define ENHANCED_EN (4) | |
128 | |
129 // UART command bit definitions. | |
130 #define CMD_UART_RESET (0x07) | |
131 #define CMD_EFR_EN (0xBF) | |
132 #define CMD_FCR_MCR_EN (0x80) | |
133 #define CMD_FIFO_EN (0x07) | |
134 #define CMD_UART_MODE (0x00) | |
135 #define CMD_CHAR8_STOP1_NOPAR (0x03) | |
136 | |
137 // UART ??? | |
138 #define BAUD_38400 (0x15) | |
139 #define BAUD_115200 (0x07) | |
140 #define BAUD_406250 (0x02) | |
141 #define BAUD_812500 (0x01) | |
142 | |
143 | |
144 // Enable/Disable ROM/Flash write strobe | |
145 #define ROM_WRITE_ENABLE() *((volatile uint16*) WS_REG_ROM) |= 0x80; | |
146 #define ROM_WRITE_DISABLE() *((volatile uint16*) WS_REG_ROM) &= ~0x80; | |
147 | |
148 #endif /* __TARGET_H__ */ |