* Alistair Buxton <a.j.buxton@xxxxxxxxx> [090730 18:45]: > Hi, > > I'm working on OMAP850 support. I have found that OMAP 15xx and 16xx have > 32 bit registers, while 730 and 850 have 8 bit RTC registers and 16 > bit MMC registers. At the moment I work around this using #defines as > such: > > #if (defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)) > #define OMAP_RTC_SECONDS_REG 0x00 > ... > #define OMAP_RTC_OSC_REG 0x19 > #else > #define OMAP_RTC_SECONDS_REG 0x00 > ... > #define OMAP_RTC_OSC_REG 0x54 > #endif > > I have been told that this isn't a good way to handle it because the > same binary kernel has to work on all OMAP1 machines. So this has to > be checked for at run time. We can check that with cpu_is_omap7xx() > but what would be the correct way to actually implement this? I could > do something like this: > > #define OMAP_RTC_REGISTER_SIZE (cpu_is_omap7xx()?1:4) > #define OMAP_RTC_OSC_REG (0x19*OMAP_RTC_REGISTER_SIZE) > > Would that be acceptable? If not, how should I do it? Is there an > existing driver that does something similar I could look at? Maybe take a look at this recent post by Russell: http://www.mail-archive.com/linux-omap@xxxxxxxxxxxxxxx/msg14522.html After you have the register offset arrays done, you can have the drivers specific register read/write functions access the registers based on cpu_is_omap7xx(). Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html