From ad2dfef092949ed18109419994d931033aa57068 Mon Sep 17 00:00:00 2001 From: "Konstantin Kirik (snegovick)" Date: Fri, 2 Jan 2026 03:15:34 +0300 Subject: Add structured device drivers * Add lowlevel generic device struct * Add clock control driver for stm32f769 Generic device struct and common device driver init scheme will help in implementation implementation of device tree or something like that for generalized hardware configuration. --- os/drivers/include/device.h | 10 ++++++++++ os/drivers/include/macro_util.h | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 os/drivers/include/device.h create mode 100644 os/drivers/include/macro_util.h (limited to 'os/drivers/include') diff --git a/os/drivers/include/device.h b/os/drivers/include/device.h new file mode 100644 index 00000000..ee3a675d --- /dev/null +++ b/os/drivers/include/device.h @@ -0,0 +1,10 @@ +#ifndef __DEVICE_H__ +#define __DEVICE_H__ + +struct device { + void *devptr; + volatile void *data; + void *config; +}; + +#endif/*__DEVICE_H__*/ diff --git a/os/drivers/include/macro_util.h b/os/drivers/include/macro_util.h new file mode 100644 index 00000000..0c447476 --- /dev/null +++ b/os/drivers/include/macro_util.h @@ -0,0 +1,20 @@ +#ifndef __DD_COMMON_H__ +#define __DD_COMMON_H__ + +#include + +#define Z_STRINGIFY(x) #x +#define STRINGIFY(s) Z_STRINGIFY(s) + +/* concatenate the values of the arguments into one */ +#define _DO_CONCAT(x, y) x ## y +#define _CONCAT(x, y) _DO_CONCAT(x, y) + +#define OFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) + +#define CONTAINER_OF(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)((char *)__mptr - OFFSETOF(type,member));}) + +#endif/*__DD_COMMON_H__*/ + -- cgit v1.2.3