blob: 706fdfb802a4a1d79ac7b11f0e8889bca0fbad12 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2021 MediaTek Inc.
* Author: Gene Chen <gene_chen@richtek.com>
*/
#ifndef _EXTDEV_IO_CLASS_H
#define _EXTDEV_IO_CLASS_H
#include <linux/regmap.h>
struct extdev_desc {
const char *dirname;
const char *devname;
const char *typestr;
int (*io_read)(void *drvdata, u16 reg, void *val, u16 size);
int (*io_write)(void *drvdata, u16 reg, const void *val, u16 size);
struct regmap *rmap;
};
struct extdev_io_device {
struct device *dev;
struct mutex io_lock;
struct extdev_desc *desc;
u16 reg;
u16 size;
bool access_lock;
void *data_buffer;
u16 data_buffer_size;
};
extern struct extdev_io_device * extdev_io_device_register(struct device *parent,
struct extdev_desc *desc);
extern void extdev_io_device_unregister(struct extdev_io_device *extdev);
extern struct extdev_io_device * devm_extdev_io_device_register(struct device *parent,
struct extdev_desc *desc);
#endif /* _EXTDEV_IO_CLASS_H */