#define pr_fmt(fmt) …
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/rtc.h>
#include <linux/slab.h>
enum { … };
#define MSM6242_HOUR10_AM …
#define MSM6242_HOUR10_PM …
#define MSM6242_HOUR10_HR_MASK …
#define MSM6242_WEEK_SUNDAY …
#define MSM6242_WEEK_MONDAY …
#define MSM6242_WEEK_TUESDAY …
#define MSM6242_WEEK_WEDNESDAY …
#define MSM6242_WEEK_THURSDAY …
#define MSM6242_WEEK_FRIDAY …
#define MSM6242_WEEK_SATURDAY …
#define MSM6242_CD_30_S_ADJ …
#define MSM6242_CD_IRQ_FLAG …
#define MSM6242_CD_BUSY …
#define MSM6242_CD_HOLD …
#define MSM6242_CE_T_MASK …
#define MSM6242_CE_T_64HZ …
#define MSM6242_CE_T_1HZ …
#define MSM6242_CE_T_1MINUTE …
#define MSM6242_CE_T_1HOUR …
#define MSM6242_CE_ITRPT_STND …
#define MSM6242_CE_MASK …
#define MSM6242_CF_TEST …
#define MSM6242_CF_12H …
#define MSM6242_CF_24H …
#define MSM6242_CF_STOP …
#define MSM6242_CF_REST …
struct msm6242_priv { … };
static inline unsigned int msm6242_read(struct msm6242_priv *priv,
unsigned int reg)
{ … }
static inline void msm6242_write(struct msm6242_priv *priv, unsigned int val,
unsigned int reg)
{ … }
static void msm6242_lock(struct msm6242_priv *priv)
{ … }
static void msm6242_unlock(struct msm6242_priv *priv)
{ … }
static int msm6242_read_time(struct device *dev, struct rtc_time *tm)
{ … }
static int msm6242_set_time(struct device *dev, struct rtc_time *tm)
{ … }
static const struct rtc_class_ops msm6242_rtc_ops = …;
static int __init msm6242_rtc_probe(struct platform_device *pdev)
{ … }
static struct platform_driver msm6242_rtc_driver = …;
module_platform_driver_probe(…);
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS(…) …;