mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2024-11-04 23:44:59 +02:00
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
This commit is contained in:
parent
7ff1a32ccf
commit
1a27e590d9
@ -78,8 +78,6 @@ static void rf_setup(struct atrf_dsc *dsc, int size, int trim)
|
||||
/* ----- Ben hardware ------------------------------------------------------ */
|
||||
|
||||
|
||||
static volatile void *base;
|
||||
|
||||
static volatile uint32_t *icmr, *icmsr, *icmcr;
|
||||
static uint32_t old_icmr;
|
||||
|
||||
@ -129,22 +127,7 @@ static void enable_lcd(void)
|
||||
|
||||
static void ben_setup(struct atrf_dsc *dsc)
|
||||
{
|
||||
/*
|
||||
* @@@ Ugly. Should either mmap the registers again here or add some
|
||||
* proper means to extract the pointer directly.
|
||||
*/
|
||||
|
||||
struct atrf_dsc {
|
||||
void *driver;
|
||||
void *handle;
|
||||
int chip_id;
|
||||
};
|
||||
struct atben_dsc {
|
||||
int fd;
|
||||
void *mem;
|
||||
};
|
||||
|
||||
base = ((struct atben_dsc *) ((struct atrf_dsc *) dsc)->handle)->mem;
|
||||
volatile void *base = atrf_ben_regs(dsc);
|
||||
|
||||
icmr = base+0x1004;
|
||||
icmsr = base+0x1008;
|
||||
|
@ -27,6 +27,7 @@ struct atrf_dsc;
|
||||
|
||||
|
||||
void *atrf_usb_handle(struct atrf_dsc *dsc); /* hack for atrf-id */
|
||||
void *atrf_ben_regs(struct atrf_dsc *dsc); /* hack for atrf-xtal */
|
||||
|
||||
const char *atrf_default_driver_name(void);
|
||||
struct atrf_dsc *atrf_open(const char *arg);
|
||||
|
@ -351,6 +351,17 @@ static int atben_interrupt(void *handle)
|
||||
}
|
||||
|
||||
|
||||
/* ----- Driver-specific hacks --------------------------------------------- */
|
||||
|
||||
|
||||
void *atben_regs(void *handle)
|
||||
{
|
||||
struct atben_dsc *dsc = handle;
|
||||
|
||||
return dsc->mem;
|
||||
}
|
||||
|
||||
|
||||
/* ----- Driver interface -------------------------------------------------- */
|
||||
|
||||
|
||||
|
@ -42,6 +42,16 @@ void *atrf_usb_handle(struct atrf_dsc *dsc)
|
||||
}
|
||||
|
||||
|
||||
void *atrf_ben_regs(struct atrf_dsc *dsc)
|
||||
{
|
||||
#ifdef HAVE_BEN
|
||||
return atben_regs(dsc->handle);
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int atrf_error(struct atrf_dsc *dsc)
|
||||
{
|
||||
return dsc->driver->error ? dsc->driver->error(dsc->handle) : 0;
|
||||
|
@ -40,4 +40,6 @@ int atrf_set_clkm_generic(
|
||||
void (*reg_write)(void *dsc, uint8_t reg, uint8_t value),
|
||||
void *handle, int mhz);
|
||||
|
||||
void *atben_regs(void *dsc); /* hack for atrf-xtal */
|
||||
|
||||
#endif /* !DRIVER_H */
|
||||
|
Loading…
Reference in New Issue
Block a user