HWA
Bare metal programming with style
gpa_1.h
Go to the documentation of this file.
1 
2 /* This file is part of the HWA project.
3  * Copyright (c) 2017 Christophe Duparquet.
4  * All rights reserved. Read LICENSE.TXT for details.
5  */
6 
12 /* Load pins implementation definitions
13  */
14 #include "ioa_1.h"
15 
29 #define hw_class__gpa
30 
31 
32 /* Accept to append a number to a _gpa definition so that (portx,n) becomes a
33  * single pin at position n of portx.
34  */
35 #define hw__gpa_ , _hw_gpa_
36 #define _hw_gpa_(o,n,a) HW_BX(_hw_gpa_,_hw_isa_4bn_,n)(o,n)
37 #define _hw_gpa_1(o,n) _ioa,o##_1_##n,(o,1,n)
38 #define _hw_gpa_0(o,n) ,(o,n),HW_EM(o has no relative n)
39 
40 
41 /* Class registers class, address, rwm, rfm
42  */
43 #define hw__gpa_crl _r32, 0x00, 0xffffffff, 0
44 #define hw__gpa_crh _r32, 0x04, 0xffffffff, 0
45 #define hw__gpa_idr _r32, 0x08, 0x00000000, 0
46 #define hw__gpa_odr _r32, 0x0C, 0x0000ffff, 0
47 #define hw__gpa_bsrr _r32, 0x10, 0xffffffff, 0xffffffff
48 #define hw__gpa_brr _r32, 0x14, 0xffffffff, 0xffffffff
49 #define hw__gpa_lckr _r32, 0x18, 0x0001ffff, 0
50 
51 #define hw__gpa_cnf15 _cb1, crh, 2, 30
52 #define hw__gpa_mode15 _cb1, crh, 2, 28
53 #define hw__gpa_cnf14 _cb1, crh, 2, 26
54 #define hw__gpa_mode14 _cb1, crh, 2, 24
55 #define hw__gpa_cnf13 _cb1, crh, 2, 22
56 #define hw__gpa_mode13 _cb1, crh, 2, 20
57 #define hw__gpa_cnf12 _cb1, crh, 2, 18
58 #define hw__gpa_mode12 _cb1, crh, 2, 16
59 #define hw__gpa_cnf11 _cb1, crh, 2, 14
60 #define hw__gpa_mode11 _cb1, crh, 2, 12
61 #define hw__gpa_cnf10 _cb1, crh, 2, 10
62 #define hw__gpa_mode10 _cb1, crh, 2, 8
63 #define hw__gpa_cnf9 _cb1, crh, 2, 6
64 #define hw__gpa_mode9 _cb1, crh, 2, 4
65 #define hw__gpa_cnf8 _cb1, crh, 2, 2
66 #define hw__gpa_mode8 _cb1, crh, 2, 0
67 
68 #define hw__gpa_cnf7 _cb1, crl, 2, 30
69 #define hw__gpa_mode7 _cb1, crl, 2, 28
70 #define hw__gpa_cnf6 _cb1, crl, 2, 26
71 #define hw__gpa_mode6 _cb1, crl, 2, 24
72 #define hw__gpa_cnf5 _cb1, crl, 2, 22
73 #define hw__gpa_mode5 _cb1, crl, 2, 20
74 #define hw__gpa_cnf4 _cb1, crl, 2, 18
75 #define hw__gpa_mode4 _cb1, crl, 2, 16
76 #define hw__gpa_cnf3 _cb1, crl, 2, 14
77 #define hw__gpa_mode3 _cb1, crl, 2, 12
78 #define hw__gpa_cnf2 _cb1, crl, 2, 10
79 #define hw__gpa_mode2 _cb1, crl, 2, 8
80 #define hw__gpa_cnf1 _cb1, crl, 2, 6
81 #define hw__gpa_mode1 _cb1, crl, 2, 4
82 #define hw__gpa_cnf0 _cb1, crl, 2, 2
83 #define hw__gpa_mode0 _cb1, crl, 2, 0
84 
85 
86 #if !defined __ASSEMBLER__
87 
88 typedef struct {
89  hwa_r32_t crl ;
90  hwa_r32_t crh ;
91  hwa_r32_t idr ;
92  hwa_r32_t odr ;
93  hwa_r32_t bsrr;
94  hwa_r32_t brr ;
95  hwa_r32_t lckr;
96 
97  uint32_t toggles ;
98 } hwa_gpa_t ;
99 
100 #endif
ioa_1.h
I/O.