mediatek: mt8173: refactor RTC and PMIC drivers
Refactor RTC and PMIC drivers.
Change-Id: I74fca536cd61e00c962f080f1ba3759287682ecf
diff --git a/plat/mediatek/mt8173/drivers/rtc/rtc.c b/plat/mediatek/mt8173/drivers/rtc/rtc.c
index 2b9033e..587886c 100644
--- a/plat/mediatek/mt8173/drivers/rtc/rtc.c
+++ b/plat/mediatek/mt8173/drivers/rtc/rtc.c
@@ -5,66 +5,11 @@
*/
#include <assert.h>
-
#include <common/debug.h>
-#include <drivers/delay_timer.h>
#include <mt8173_def.h>
-#include <pmic_wrap_init.h>
#include <rtc.h>
-/* RTC busy status polling interval and retry count */
-enum {
- RTC_WRTGR_POLLING_DELAY_MS = 10,
- RTC_WRTGR_POLLING_CNT = 100
-};
-
-static uint16_t RTC_Read(uint32_t addr)
-{
- uint32_t rdata = 0;
-
- pwrap_read((uint32_t)addr, &rdata);
- return (uint16_t)rdata;
-}
-
-static void RTC_Write(uint32_t addr, uint16_t data)
-{
- pwrap_write((uint32_t)addr, (uint32_t)data);
-}
-
-static inline int32_t rtc_busy_wait(void)
-{
- uint64_t retry = RTC_WRTGR_POLLING_CNT;
-
- do {
- mdelay(RTC_WRTGR_POLLING_DELAY_MS);
- if (!(RTC_Read(RTC_BBPU) & RTC_BBPU_CBUSY))
- return 1;
- retry--;
- } while (retry);
-
- ERROR("[RTC] rtc cbusy time out!\n");
- return 0;
-}
-
-static int32_t Write_trigger(void)
-{
- RTC_Write(RTC_WRTGR, 1);
- return rtc_busy_wait();
-}
-
-static int32_t Writeif_unlock(void)
-{
- RTC_Write(RTC_PROT, RTC_PROT_UNLOCK1);
- if (!Write_trigger())
- return 0;
- RTC_Write(RTC_PROT, RTC_PROT_UNLOCK2);
- if (!Write_trigger())
- return 0;
-
- return 1;
-}
-
void rtc_bbpu_power_down(void)
{
uint16_t bbpu;
@@ -73,7 +18,7 @@
bbpu = RTC_BBPU_KEY | RTC_BBPU_AUTO | RTC_BBPU_PWREN;
if (Writeif_unlock()) {
RTC_Write(RTC_BBPU, bbpu);
- if (!Write_trigger())
+ if (!RTC_Write_Trigger())
assert(0);
} else {
assert(0);
diff --git a/plat/mediatek/mt8173/drivers/rtc/rtc.h b/plat/mediatek/mt8173/drivers/rtc/rtc.h
index 9c4ca49..f60a4c1 100644
--- a/plat/mediatek/mt8173/drivers/rtc/rtc.h
+++ b/plat/mediatek/mt8173/drivers/rtc/rtc.h
@@ -49,6 +49,12 @@
RTC_BBPU_KEY = 0x43 << 8
};
+/* external API */
+uint16_t RTC_Read(uint32_t addr);
+void RTC_Write(uint32_t addr, uint16_t data);
+int32_t rtc_busy_wait(void);
+int32_t RTC_Write_Trigger(void);
+int32_t Writeif_unlock(void);
void rtc_bbpu_power_down(void);
#endif /* RTC_H */