linux/drivers/rtc/rtc-sd2405al.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * RTC driver for the SD2405AL Real-Time Clock
 *
 * Datasheet:
 * https://image.dfrobot.com/image/data/TOY0021/SD2405AL%20datasheet%20(Angelo%20v0.1).pdf
 *
 * Copyright (C) 2024 Tóth János <[email protected]>
 */

#include <linux/bcd.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
#include <linux/rtc.h>

/* Real time clock registers */
#define SD2405AL_REG_T_SEC
#define SD2405AL_REG_T_MIN
#define SD2405AL_REG_T_HOUR
#define SD2405AL_BIT_12H_PM
#define SD2405AL_BIT_24H
#define SD2405AL_REG_T_WEEK
#define SD2405AL_REG_T_DAY
#define SD2405AL_REG_T_MON
#define SD2405AL_REG_T_YEAR

#define SD2405AL_NUM_T_REGS

/* Control registers */
#define SD2405AL_REG_CTR1
#define SD2405AL_BIT_WRTC2
#define SD2405AL_BIT_WRTC3
#define SD2405AL_REG_CTR2
#define SD2405AL_BIT_WRTC1
#define SD2405AL_REG_CTR3
#define SD2405AL_REG_TTF
#define SD2405AL_REG_CNTDWN

/* General RAM */
#define SD2405AL_REG_M_START
#define SD2405AL_REG_M_END

struct sd2405al {};

static int sd2405al_enable_reg_write(struct sd2405al *sd2405al)
{}

static int sd2405al_disable_reg_write(struct sd2405al *sd2405al)
{}

static int sd2405al_read_time(struct device *dev, struct rtc_time *time)
{}

static int sd2405al_set_time(struct device *dev, struct rtc_time *time)
{}

static const struct rtc_class_ops sd2405al_rtc_ops =;

static const struct regmap_config sd2405al_regmap_conf =;

static int sd2405al_probe(struct i2c_client *client)
{}

static const struct i2c_device_id sd2405al_id[] =;
MODULE_DEVICE_TABLE(i2c, sd2405al_id);

static const __maybe_unused struct of_device_id sd2405al_of_match[] =;
MODULE_DEVICE_TABLE(of, sd2405al_of_match);

static struct i2c_driver sd2405al_driver =;

module_i2c_driver();

MODULE_AUTHOR();
MODULE_LICENSE();
MODULE_DESCRIPTION();