Message ID | 20190910070446.639-3-frank-w@public-files.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | implement poweroff for mt6323 / bpi-r2 | expand |
Is it ok now? It seems not yet merged to next. Other code is based on this. Am 10. September 2019 09:04:41 MESZ schrieb Frank Wunderlich <frank-w@public-files.de>: >From: Josef Friedl <josef.friedl@speed.at> > >move code to separate header-file to reuse definitions later >in poweroff-driver (drivers/power/reset/mt6323-poweroff.c) > >Suggested-by: Frank Wunderlich <frank-w@public-files.de> >Signed-off-by: Josef Friedl <josef.friedl@speed.at> >Signed-off-by: Frank Wunderlich <frank-w@public-files.de> >Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com> >Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org> >--- >changes since v6: updated copyright >changes since v5: none >changes since v4: none >changes since v3: none >changes since v2: add missing commit-message >--- > drivers/rtc/rtc-mt6397.c | 55 +------------------------- > include/linux/mfd/mt6397/rtc.h | 71 ++++++++++++++++++++++++++++++++++ > 2 files changed, 72 insertions(+), 54 deletions(-) > create mode 100644 include/linux/mfd/mt6397/rtc.h > >diff --git a/drivers/rtc/rtc-mt6397.c b/drivers/rtc/rtc-mt6397.c >index b46ed4dc7015..c08ee5edf865 100644 >--- a/drivers/rtc/rtc-mt6397.c >+++ b/drivers/rtc/rtc-mt6397.c >@@ -9,60 +9,7 @@ > #include <linux/module.h> > #include <linux/regmap.h> > #include <linux/rtc.h> >-#include <linux/irqdomain.h> >-#include <linux/platform_device.h> >-#include <linux/of_address.h> >-#include <linux/of_irq.h> >-#include <linux/io.h> >-#include <linux/mfd/mt6397/core.h> >- >-#define RTC_BBPU 0x0000 >-#define RTC_BBPU_CBUSY BIT(6) >- >-#define RTC_WRTGR 0x003c >- >-#define RTC_IRQ_STA 0x0002 >-#define RTC_IRQ_STA_AL BIT(0) >-#define RTC_IRQ_STA_LP BIT(3) >- >-#define RTC_IRQ_EN 0x0004 >-#define RTC_IRQ_EN_AL BIT(0) >-#define RTC_IRQ_EN_ONESHOT BIT(2) >-#define RTC_IRQ_EN_LP BIT(3) >-#define RTC_IRQ_EN_ONESHOT_AL (RTC_IRQ_EN_ONESHOT | RTC_IRQ_EN_AL) >- >-#define RTC_AL_MASK 0x0008 >-#define RTC_AL_MASK_DOW BIT(4) >- >-#define RTC_TC_SEC 0x000a >-/* Min, Hour, Dom... register offset to RTC_TC_SEC */ >-#define RTC_OFFSET_SEC 0 >-#define RTC_OFFSET_MIN 1 >-#define RTC_OFFSET_HOUR 2 >-#define RTC_OFFSET_DOM 3 >-#define RTC_OFFSET_DOW 4 >-#define RTC_OFFSET_MTH 5 >-#define RTC_OFFSET_YEAR 6 >-#define RTC_OFFSET_COUNT 7 >- >-#define RTC_AL_SEC 0x0018 >- >-#define RTC_PDN2 0x002e >-#define RTC_PDN2_PWRON_ALARM BIT(4) >- >-#define RTC_MIN_YEAR 1968 >-#define RTC_BASE_YEAR 1900 >-#define RTC_NUM_YEARS 128 >-#define RTC_MIN_YEAR_OFFSET (RTC_MIN_YEAR - RTC_BASE_YEAR) >- >-struct mt6397_rtc { >- struct device *dev; >- struct rtc_device *rtc_dev; >- struct mutex lock; >- struct regmap *regmap; >- int irq; >- u32 addr_base; >-}; >+#include <linux/mfd/mt6397/rtc.h> > > static int mtk_rtc_write_trigger(struct mt6397_rtc *rtc) > { >diff --git a/include/linux/mfd/mt6397/rtc.h >b/include/linux/mfd/mt6397/rtc.h >new file mode 100644 >index 000000000000..f84b9163c0ee >--- /dev/null >+++ b/include/linux/mfd/mt6397/rtc.h >@@ -0,0 +1,71 @@ >+/* SPDX-License-Identifier: GPL-2.0 */ >+/* >+ * Copyright (C) 2014-2019 MediaTek Inc. >+ * >+ * Author: Tianping.Fang <tianping.fang@mediatek.com> >+ * Sean Wang <sean.wang@mediatek.com> >+ */ >+ >+#ifndef _LINUX_MFD_MT6397_RTC_H_ >+#define _LINUX_MFD_MT6397_RTC_H_ >+ >+#include <linux/jiffies.h> >+#include <linux/mutex.h> >+#include <linux/regmap.h> >+#include <linux/rtc.h> >+ >+#define RTC_BBPU 0x0000 >+#define RTC_BBPU_CBUSY BIT(6) >+#define RTC_BBPU_KEY (0x43 << 8) >+ >+#define RTC_WRTGR 0x003c >+ >+#define RTC_IRQ_STA 0x0002 >+#define RTC_IRQ_STA_AL BIT(0) >+#define RTC_IRQ_STA_LP BIT(3) >+ >+#define RTC_IRQ_EN 0x0004 >+#define RTC_IRQ_EN_AL BIT(0) >+#define RTC_IRQ_EN_ONESHOT BIT(2) >+#define RTC_IRQ_EN_LP BIT(3) >+#define RTC_IRQ_EN_ONESHOT_AL (RTC_IRQ_EN_ONESHOT | RTC_IRQ_EN_AL) >+ >+#define RTC_AL_MASK 0x0008 >+#define RTC_AL_MASK_DOW BIT(4) >+ >+#define RTC_TC_SEC 0x000a >+/* Min, Hour, Dom... register offset to RTC_TC_SEC */ >+#define RTC_OFFSET_SEC 0 >+#define RTC_OFFSET_MIN 1 >+#define RTC_OFFSET_HOUR 2 >+#define RTC_OFFSET_DOM 3 >+#define RTC_OFFSET_DOW 4 >+#define RTC_OFFSET_MTH 5 >+#define RTC_OFFSET_YEAR 6 >+#define RTC_OFFSET_COUNT 7 >+ >+#define RTC_AL_SEC 0x0018 >+ >+#define RTC_PDN2 0x002e >+#define RTC_PDN2_PWRON_ALARM BIT(4) >+ >+#define RTC_MIN_YEAR 1968 >+#define RTC_BASE_YEAR 1900 >+#define RTC_NUM_YEARS 128 >+#define RTC_MIN_YEAR_OFFSET (RTC_MIN_YEAR - RTC_BASE_YEAR) >+ >+#define MTK_RTC_POLL_DELAY_US 10 >+#define MTK_RTC_POLL_TIMEOUT (jiffies_to_usecs(HZ)) >+ >+struct mt6397_rtc { >+ struct device *dev; >+ struct rtc_device *rtc_dev; >+ >+ /* Protect register access from multiple tasks */ >+ struct mutex lock; >+ struct regmap *regmap; >+ int irq; >+ u32 addr_base; >+}; >+ >+#endif /* _LINUX_MFD_MT6397_RTC_H_ */
diff --git a/drivers/rtc/rtc-mt6397.c b/drivers/rtc/rtc-mt6397.c index b46ed4dc7015..c08ee5edf865 100644 --- a/drivers/rtc/rtc-mt6397.c +++ b/drivers/rtc/rtc-mt6397.c @@ -9,60 +9,7 @@ #include <linux/module.h> #include <linux/regmap.h> #include <linux/rtc.h> -#include <linux/irqdomain.h> -#include <linux/platform_device.h> -#include <linux/of_address.h> -#include <linux/of_irq.h> -#include <linux/io.h> -#include <linux/mfd/mt6397/core.h> - -#define RTC_BBPU 0x0000 -#define RTC_BBPU_CBUSY BIT(6) - -#define RTC_WRTGR 0x003c - -#define RTC_IRQ_STA 0x0002 -#define RTC_IRQ_STA_AL BIT(0) -#define RTC_IRQ_STA_LP BIT(3) - -#define RTC_IRQ_EN 0x0004 -#define RTC_IRQ_EN_AL BIT(0) -#define RTC_IRQ_EN_ONESHOT BIT(2) -#define RTC_IRQ_EN_LP BIT(3) -#define RTC_IRQ_EN_ONESHOT_AL (RTC_IRQ_EN_ONESHOT | RTC_IRQ_EN_AL) - -#define RTC_AL_MASK 0x0008 -#define RTC_AL_MASK_DOW BIT(4) - -#define RTC_TC_SEC 0x000a -/* Min, Hour, Dom... register offset to RTC_TC_SEC */ -#define RTC_OFFSET_SEC 0 -#define RTC_OFFSET_MIN 1 -#define RTC_OFFSET_HOUR 2 -#define RTC_OFFSET_DOM 3 -#define RTC_OFFSET_DOW 4 -#define RTC_OFFSET_MTH 5 -#define RTC_OFFSET_YEAR 6 -#define RTC_OFFSET_COUNT 7 - -#define RTC_AL_SEC 0x0018 - -#define RTC_PDN2 0x002e -#define RTC_PDN2_PWRON_ALARM BIT(4) - -#define RTC_MIN_YEAR 1968 -#define RTC_BASE_YEAR 1900 -#define RTC_NUM_YEARS 128 -#define RTC_MIN_YEAR_OFFSET (RTC_MIN_YEAR - RTC_BASE_YEAR) - -struct mt6397_rtc { - struct device *dev; - struct rtc_device *rtc_dev; - struct mutex lock; - struct regmap *regmap; - int irq; - u32 addr_base; -}; +#include <linux/mfd/mt6397/rtc.h> static int mtk_rtc_write_trigger(struct mt6397_rtc *rtc) { diff --git a/include/linux/mfd/mt6397/rtc.h b/include/linux/mfd/mt6397/rtc.h new file mode 100644 index 000000000000..f84b9163c0ee --- /dev/null +++ b/include/linux/mfd/mt6397/rtc.h @@ -0,0 +1,71 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2014-2019 MediaTek Inc. + * + * Author: Tianping.Fang <tianping.fang@mediatek.com> + * Sean Wang <sean.wang@mediatek.com> + */ + +#ifndef _LINUX_MFD_MT6397_RTC_H_ +#define _LINUX_MFD_MT6397_RTC_H_ + +#include <linux/jiffies.h> +#include <linux/mutex.h> +#include <linux/regmap.h> +#include <linux/rtc.h> + +#define RTC_BBPU 0x0000 +#define RTC_BBPU_CBUSY BIT(6) +#define RTC_BBPU_KEY (0x43 << 8) + +#define RTC_WRTGR 0x003c + +#define RTC_IRQ_STA 0x0002 +#define RTC_IRQ_STA_AL BIT(0) +#define RTC_IRQ_STA_LP BIT(3) + +#define RTC_IRQ_EN 0x0004 +#define RTC_IRQ_EN_AL BIT(0) +#define RTC_IRQ_EN_ONESHOT BIT(2) +#define RTC_IRQ_EN_LP BIT(3) +#define RTC_IRQ_EN_ONESHOT_AL (RTC_IRQ_EN_ONESHOT | RTC_IRQ_EN_AL) + +#define RTC_AL_MASK 0x0008 +#define RTC_AL_MASK_DOW BIT(4) + +#define RTC_TC_SEC 0x000a +/* Min, Hour, Dom... register offset to RTC_TC_SEC */ +#define RTC_OFFSET_SEC 0 +#define RTC_OFFSET_MIN 1 +#define RTC_OFFSET_HOUR 2 +#define RTC_OFFSET_DOM 3 +#define RTC_OFFSET_DOW 4 +#define RTC_OFFSET_MTH 5 +#define RTC_OFFSET_YEAR 6 +#define RTC_OFFSET_COUNT 7 + +#define RTC_AL_SEC 0x0018 + +#define RTC_PDN2 0x002e +#define RTC_PDN2_PWRON_ALARM BIT(4) + +#define RTC_MIN_YEAR 1968 +#define RTC_BASE_YEAR 1900 +#define RTC_NUM_YEARS 128 +#define RTC_MIN_YEAR_OFFSET (RTC_MIN_YEAR - RTC_BASE_YEAR) + +#define MTK_RTC_POLL_DELAY_US 10 +#define MTK_RTC_POLL_TIMEOUT (jiffies_to_usecs(HZ)) + +struct mt6397_rtc { + struct device *dev; + struct rtc_device *rtc_dev; + + /* Protect register access from multiple tasks */ + struct mutex lock; + struct regmap *regmap; + int irq; + u32 addr_base; +}; + +#endif /* _LINUX_MFD_MT6397_RTC_H_ */