IEEE 802.15.4 subsystem
Sign in or create your account | Project List | Help
IEEE 802.15.4 subsystem Commit Details
Date: | 2011-04-10 12:25:11 (12 years 11 months ago) |
---|---|
Author: | Werner Almesberger |
Commit: | 1a27e590d971ba252169ab97af2cf7bb18a3a748 |
Message: | tools/: cleaned up the gross layering violation in atrf-xtal/atben.c - include/atrf.h (atrf_ben_regs), lib/atrf.c (atrf_ben_regs), lib/driver.h (atben_regs), lib/atben.c (atben_regs): new function to get the mmap'ed registers in a less disgusting way - atrf-xtal/atben.c (base, ben_setup): cleaned up the horrible layering violation |
Files: |
tools/atrf-xtal/atben.c (2 diffs) tools/include/atrf.h (1 diff) tools/lib/atben.c (1 diff) tools/lib/atrf.c (1 diff) tools/lib/driver.h (1 diff) |
Change Details
tools/atrf-xtal/atben.c | ||
---|---|---|
78 | 78 | /* ----- Ben hardware ------------------------------------------------------ */ |
79 | 79 | |
80 | 80 | |
81 | static volatile void *base; | |
82 | ||
83 | 81 | static volatile uint32_t *icmr, *icmsr, *icmcr; |
84 | 82 | static uint32_t old_icmr; |
85 | 83 | |
... | ... | |
129 | 127 | |
130 | 128 | static void ben_setup(struct atrf_dsc *dsc) |
131 | 129 | { |
132 | /* | |
133 | * @@@ Ugly. Should either mmap the registers again here or add some | |
134 | * proper means to extract the pointer directly. | |
135 | */ | |
136 | ||
137 | struct atrf_dsc { | |
138 | void *driver; | |
139 | void *handle; | |
140 | int chip_id; | |
141 | }; | |
142 | struct atben_dsc { | |
143 | int fd; | |
144 | void *mem; | |
145 | }; | |
146 | ||
147 | base = ((struct atben_dsc *) ((struct atrf_dsc *) dsc)->handle)->mem; | |
130 | volatile void *base = atrf_ben_regs(dsc); | |
148 | 131 | |
149 | 132 | icmr = base+0x1004; |
150 | 133 | icmsr = base+0x1008; |
tools/include/atrf.h | ||
---|---|---|
27 | 27 | |
28 | 28 | |
29 | 29 | void *atrf_usb_handle(struct atrf_dsc *dsc); /* hack for atrf-id */ |
30 | void *atrf_ben_regs(struct atrf_dsc *dsc); /* hack for atrf-xtal */ | |
30 | 31 | |
31 | 32 | const char *atrf_default_driver_name(void); |
32 | 33 | struct atrf_dsc *atrf_open(const char *arg); |
tools/lib/atben.c | ||
---|---|---|
351 | 351 | } |
352 | 352 | |
353 | 353 | |
354 | /* ----- Driver-specific hacks --------------------------------------------- */ | |
355 | ||
356 | ||
357 | void *atben_regs(void *handle) | |
358 | { | |
359 | struct atben_dsc *dsc = handle; | |
360 | ||
361 | return dsc->mem; | |
362 | } | |
363 | ||
364 | ||
354 | 365 | /* ----- Driver interface -------------------------------------------------- */ |
355 | 366 | |
356 | 367 |
tools/lib/atrf.c | ||
---|---|---|
42 | 42 | } |
43 | 43 | |
44 | 44 | |
45 | void *atrf_ben_regs(struct atrf_dsc *dsc) | |
46 | { | |
47 | #ifdef HAVE_BEN | |
48 | return atben_regs(dsc->handle); | |
49 | #else | |
50 | return NULL; | |
51 | #endif | |
52 | } | |
53 | ||
54 | ||
45 | 55 | int atrf_error(struct atrf_dsc *dsc) |
46 | 56 | { |
47 | 57 | return dsc->driver->error ? dsc->driver->error(dsc->handle) : 0; |
tools/lib/driver.h | ||
---|---|---|
40 | 40 | void (*reg_write)(void *dsc, uint8_t reg, uint8_t value), |
41 | 41 | void *handle, int mhz); |
42 | 42 | |
43 | void *atben_regs(void *dsc); /* hack for atrf-xtal */ | |
44 | ||
43 | 45 | #endif /* !DRIVER_H */ |