static inline int jz4740_rtc_reg_write(struct jz4740_rtc *rtc, size_t reg, uint32_t val) { int ret; ret = jz4740_rtc_wait_write_ready(rtc); if (ret == 0) writel(val, rtc->base + reg); return ret; }
static inline int jz4740_rtc_reg_write(struct jz4740_rtc *rtc, size_t reg, uint32_t val) { int ret = 0; if (rtc->type >= ID_JZ4780) ret = jz4780_rtc_enable_write(rtc); if (ret == 0) ret = jz4740_rtc_wait_write_ready(rtc); if (ret == 0) writel(val, rtc->base + reg); return ret; }
static inline int jz4780_rtc_enable_write(struct jz4740_rtc *rtc) { uint32_t ctrl; int ret, timeout = 1000; ret = jz4740_rtc_wait_write_ready(rtc); if (ret != 0) return ret; writel(JZ_RTC_WENR_MAGIC, rtc->base + JZ_REG_RTC_WENR); do { ctrl = readl(rtc->base + JZ_REG_RTC_WENR); } while (!(ctrl & JZ_RTC_WENR_WEN) && --timeout); return timeout ? 0 : -EIO; }