From 416ec66380d89e2d3ff8ea37fd748ccc77130ab2 Mon Sep 17 00:00:00 2001 From: CXSforHPU <156403074+CXSforHPU@users.noreply.github.com> Date: Sat, 24 Aug 2024 06:15:09 +0800 Subject: [device] add dev_ prefix for file names --- components/drivers/include/drivers/alarm.h | 75 ----- components/drivers/include/drivers/audio.h | 176 ---------- components/drivers/include/drivers/can.h | 364 --------------------- components/drivers/include/drivers/dev_alarm.h | 75 +++++ components/drivers/include/drivers/dev_audio.h | 176 ++++++++++ components/drivers/include/drivers/dev_can.h | 364 +++++++++++++++++++++ components/drivers/include/drivers/dev_i2c.h | 155 +++++++++ .../drivers/include/drivers/dev_i2c_bit_ops.h | 42 +++ components/drivers/include/drivers/dev_i2c_dm.h | 51 +++ components/drivers/include/drivers/dev_pin.h | 178 ++++++++++ components/drivers/include/drivers/dev_pwm.h | 66 ++++ components/drivers/include/drivers/dev_rtc.h | 82 +++++ components/drivers/include/drivers/i2c-bit-ops.h | 42 --- components/drivers/include/drivers/i2c.h | 136 -------- components/drivers/include/drivers/i2c_dev.h | 44 --- components/drivers/include/drivers/i2c_dm.h | 51 --- components/drivers/include/drivers/pin.h | 178 ---------- components/drivers/include/drivers/rt_drv_pwm.h | 66 ---- components/drivers/include/drivers/rtc.h | 82 ----- components/drivers/include/drivers/sensor.h | 2 +- components/drivers/include/drivers/sensor_v2.h | 2 +- components/drivers/include/drivers/spi.h | 2 +- components/drivers/include/drivers/touch.h | 2 +- components/drivers/include/rtdevice.h | 19 +- 24 files changed, 1202 insertions(+), 1228 deletions(-) delete mode 100644 components/drivers/include/drivers/alarm.h delete mode 100644 components/drivers/include/drivers/audio.h delete mode 100644 components/drivers/include/drivers/can.h create mode 100644 components/drivers/include/drivers/dev_alarm.h create mode 100644 components/drivers/include/drivers/dev_audio.h create mode 100644 components/drivers/include/drivers/dev_can.h create mode 100644 components/drivers/include/drivers/dev_i2c.h create mode 100644 components/drivers/include/drivers/dev_i2c_bit_ops.h create mode 100644 components/drivers/include/drivers/dev_i2c_dm.h create mode 100644 components/drivers/include/drivers/dev_pin.h create mode 100644 components/drivers/include/drivers/dev_pwm.h create mode 100644 components/drivers/include/drivers/dev_rtc.h delete mode 100644 components/drivers/include/drivers/i2c-bit-ops.h delete mode 100644 components/drivers/include/drivers/i2c.h delete mode 100644 components/drivers/include/drivers/i2c_dev.h delete mode 100644 components/drivers/include/drivers/i2c_dm.h delete mode 100644 components/drivers/include/drivers/pin.h delete mode 100644 components/drivers/include/drivers/rt_drv_pwm.h delete mode 100644 components/drivers/include/drivers/rtc.h (limited to 'components/drivers/include') diff --git a/components/drivers/include/drivers/alarm.h b/components/drivers/include/drivers/alarm.h deleted file mode 100644 index 864933d78c..0000000000 --- a/components/drivers/include/drivers/alarm.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-10-27 heyuanjie87 first version. - * 2013-05-17 aozima initial alarm event & mutex in system init. - * 2020-10-15 zhangsz add alarm flags hour minute second. - */ - -#ifndef __ALARM_H__ -#define __ALARM_H__ - -#include -#include - -#define RT_ALARM_TM_NOW -1 /* set the alarm tm_day,tm_mon,tm_sec,etc. - to now.we also call it "don't care" value */ - -/* alarm flags */ -#define RT_ALARM_ONESHOT 0x000 /* only alarm once */ -#define RT_ALARM_DAILY 0x100 /* alarm everyday */ -#define RT_ALARM_WEEKLY 0x200 /* alarm weekly at Monday or Friday etc. */ -#define RT_ALARM_MONTHLY 0x400 /* alarm monthly at someday */ -#define RT_ALARM_YAERLY 0x800 /* alarm yearly at a certain date */ -#define RT_ALARM_HOUR 0x1000 /* alarm each hour at a certain min:second */ -#define RT_ALARM_MINUTE 0x2000 /* alarm each minute at a certain second */ -#define RT_ALARM_SECOND 0x4000 /* alarm each second */ - -#define RT_ALARM_STATE_INITED 0x02 -#define RT_ALARM_STATE_START 0x01 -#define RT_ALARM_STATE_STOP 0x00 - -/* alarm control cmd */ -#define RT_ALARM_CTRL_MODIFY 1 /* modify alarm time or alarm flag */ - -typedef struct rt_alarm *rt_alarm_t; -typedef void (*rt_alarm_callback_t)(rt_alarm_t alarm, time_t timestamp); - -struct rt_alarm -{ - rt_list_t list; - rt_uint32_t flag; - rt_alarm_callback_t callback; - struct tm wktime; - - void *user_data; -}; - -struct rt_alarm_setup -{ - rt_uint32_t flag; /* alarm flag */ - struct tm wktime; /* when will the alarm wake up user */ -}; - -struct rt_alarm_container -{ - rt_list_t head; - struct rt_mutex mutex; - struct rt_event event; - struct rt_alarm *current; -}; - -rt_alarm_t rt_alarm_create(rt_alarm_callback_t callback, - struct rt_alarm_setup *setup); -rt_err_t rt_alarm_control(rt_alarm_t alarm, int cmd, void *arg); -void rt_alarm_update(rt_device_t dev, rt_uint32_t event); -rt_err_t rt_alarm_delete(rt_alarm_t alarm); -rt_err_t rt_alarm_start(rt_alarm_t alarm); -rt_err_t rt_alarm_stop(rt_alarm_t alarm); -int rt_alarm_system_init(void); - -#endif /* __ALARM_H__ */ diff --git a/components/drivers/include/drivers/audio.h b/components/drivers/include/drivers/audio.h deleted file mode 100644 index 6d98272556..0000000000 --- a/components/drivers/include/drivers/audio.h +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2017-05-09 Urey first version - * 2019-07-09 Zero-Free improve device ops interface and data flows - * - */ - -#ifndef __AUDIO_H__ -#define __AUDIO_H__ - -#include "audio_pipe.h" - -/* AUDIO command */ -#define _AUDIO_CTL(a) (RT_DEVICE_CTRL_BASE(Sound) + a) - -#define AUDIO_CTL_GETCAPS _AUDIO_CTL(1) -#define AUDIO_CTL_CONFIGURE _AUDIO_CTL(2) -#define AUDIO_CTL_START _AUDIO_CTL(3) -#define AUDIO_CTL_STOP _AUDIO_CTL(4) -#define AUDIO_CTL_GETBUFFERINFO _AUDIO_CTL(5) - -/* Audio Device Types */ -#define AUDIO_TYPE_QUERY 0x00 -#define AUDIO_TYPE_INPUT 0x01 -#define AUDIO_TYPE_OUTPUT 0x02 -#define AUDIO_TYPE_MIXER 0x04 - -/* Supported Sampling Rates */ -#define AUDIO_SAMP_RATE_8K 0x0001 -#define AUDIO_SAMP_RATE_11K 0x0002 -#define AUDIO_SAMP_RATE_16K 0x0004 -#define AUDIO_SAMP_RATE_22K 0x0008 -#define AUDIO_SAMP_RATE_32K 0x0010 -#define AUDIO_SAMP_RATE_44K 0x0020 -#define AUDIO_SAMP_RATE_48K 0x0040 -#define AUDIO_SAMP_RATE_96K 0x0080 -#define AUDIO_SAMP_RATE_128K 0x0100 -#define AUDIO_SAMP_RATE_160K 0x0200 -#define AUDIO_SAMP_RATE_172K 0x0400 -#define AUDIO_SAMP_RATE_192K 0x0800 - -/* Supported Bit Rates */ -#define AUDIO_BIT_RATE_22K 0x01 -#define AUDIO_BIT_RATE_44K 0x02 -#define AUDIO_BIT_RATE_48K 0x04 -#define AUDIO_BIT_RATE_96K 0x08 -#define AUDIO_BIT_RATE_128K 0x10 -#define AUDIO_BIT_RATE_160K 0x20 -#define AUDIO_BIT_RATE_172K 0x40 -#define AUDIO_BIT_RATE_192K 0x80 - -/* Support Dsp(input/output) Units controls */ -#define AUDIO_DSP_PARAM 0 /* get/set all params */ -#define AUDIO_DSP_SAMPLERATE 1 /* samplerate */ -#define AUDIO_DSP_CHANNELS 2 /* channels */ -#define AUDIO_DSP_SAMPLEBITS 3 /* sample bits width */ - -/* Supported Mixer Units controls */ -#define AUDIO_MIXER_QUERY 0x0000 -#define AUDIO_MIXER_MUTE 0x0001 -#define AUDIO_MIXER_VOLUME 0x0002 -#define AUDIO_MIXER_BASS 0x0004 -#define AUDIO_MIXER_MID 0x0008 -#define AUDIO_MIXER_TREBLE 0x0010 -#define AUDIO_MIXER_EQUALIZER 0x0020 -#define AUDIO_MIXER_LINE 0x0040 -#define AUDIO_MIXER_DIGITAL 0x0080 -#define AUDIO_MIXER_MIC 0x0100 -#define AUDIO_MIXER_VITURAL 0x0200 -#define AUDIO_MIXER_EXTEND 0x8000 /* extend mixer command */ - -#define AUDIO_VOLUME_MAX (100) -#define AUDIO_VOLUME_MIN (0) - -#define CFG_AUDIO_REPLAY_QUEUE_COUNT 4 - -enum -{ - AUDIO_STREAM_REPLAY = 0, - AUDIO_STREAM_RECORD, - AUDIO_STREAM_LAST = AUDIO_STREAM_RECORD, -}; - -/* the preferred number and size of audio pipeline buffer for the audio device */ -struct rt_audio_buf_info -{ - rt_uint8_t *buffer; - rt_uint16_t block_size; - rt_uint16_t block_count; - rt_uint32_t total_size; -}; - -struct rt_audio_device; -struct rt_audio_caps; -struct rt_audio_configure; -struct rt_audio_ops -{ - rt_err_t (*getcaps)(struct rt_audio_device *audio, struct rt_audio_caps *caps); - rt_err_t (*configure)(struct rt_audio_device *audio, struct rt_audio_caps *caps); - rt_err_t (*init)(struct rt_audio_device *audio); - rt_err_t (*start)(struct rt_audio_device *audio, int stream); - rt_err_t (*stop)(struct rt_audio_device *audio, int stream); - rt_ssize_t (*transmit)(struct rt_audio_device *audio, const void *writeBuf, void *readBuf, rt_size_t size); - /* get page size of codec or private buffer's info */ - void (*buffer_info)(struct rt_audio_device *audio, struct rt_audio_buf_info *info); -}; - -struct rt_audio_configure -{ - rt_uint32_t samplerate; - rt_uint16_t channels; - rt_uint16_t samplebits; -}; - -struct rt_audio_caps -{ - int main_type; - int sub_type; - - union - { - rt_uint32_t mask; - int value; - struct rt_audio_configure config; - } udata; -}; - -struct rt_audio_replay -{ - struct rt_mempool *mp; - struct rt_data_queue queue; - struct rt_mutex lock; - struct rt_completion cmp; - struct rt_audio_buf_info buf_info; - rt_uint8_t *write_data; - rt_uint16_t write_index; - rt_uint16_t read_index; - rt_uint32_t pos; - rt_uint8_t event; - rt_bool_t activated; -}; - -struct rt_audio_record -{ - struct rt_audio_pipe pipe; - rt_bool_t activated; -}; - -struct rt_audio_device -{ - struct rt_device parent; - struct rt_audio_ops *ops; - struct rt_audio_replay *replay; - struct rt_audio_record *record; -}; - -rt_err_t rt_audio_register(struct rt_audio_device *audio, const char *name, rt_uint32_t flag, void *data); -void rt_audio_tx_complete(struct rt_audio_device *audio); -void rt_audio_rx_done(struct rt_audio_device *audio, rt_uint8_t *pbuf, rt_size_t len); - -/* Device Control Commands */ -#define CODEC_CMD_RESET 0 -#define CODEC_CMD_SET_VOLUME 1 -#define CODEC_CMD_GET_VOLUME 2 -#define CODEC_CMD_SAMPLERATE 3 -#define CODEC_CMD_EQ 4 -#define CODEC_CMD_3D 5 - -#define CODEC_VOLUME_MAX (63) - -#endif /* __AUDIO_H__ */ diff --git a/components/drivers/include/drivers/can.h b/components/drivers/include/drivers/can.h deleted file mode 100644 index 2ce60d8072..0000000000 --- a/components/drivers/include/drivers/can.h +++ /dev/null @@ -1,364 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2015-05-14 aubrcool@qq.com first version - * 2015-07-06 Bernard remove RT_CAN_USING_LED. - * 2022-05-08 hpmicro add CANFD support, fixed typos - */ - -#ifndef CAN_H_ -#define CAN_H_ - -#include - -#ifndef RT_CANMSG_BOX_SZ -#define RT_CANMSG_BOX_SZ 16 -#endif -#ifndef RT_CANSND_BOX_NUM -#define RT_CANSND_BOX_NUM 1 -#endif - -enum CAN_DLC -{ - CAN_MSG_0BYTE = 0, - CAN_MSG_1BYTE, - CAN_MSG_2BYTES, - CAN_MSG_3BYTES, - CAN_MSG_4BYTES, - CAN_MSG_5BYTES, - CAN_MSG_6BYTES, - CAN_MSG_7BYTES, - CAN_MSG_8BYTES, - CAN_MSG_12BYTES, - CAN_MSG_16BYTES, - CAN_MSG_20BYTES, - CAN_MSG_24BYTES, - CAN_MSG_32BYTES, - CAN_MSG_48BYTES, - CAN_MSG_64BYTES, -}; - -enum CANBAUD -{ - CAN1MBaud = 1000UL * 1000,/* 1 MBit/sec */ - CAN800kBaud = 1000UL * 800, /* 800 kBit/sec */ - CAN500kBaud = 1000UL * 500, /* 500 kBit/sec */ - CAN250kBaud = 1000UL * 250, /* 250 kBit/sec */ - CAN125kBaud = 1000UL * 125, /* 125 kBit/sec */ - CAN100kBaud = 1000UL * 100, /* 100 kBit/sec */ - CAN50kBaud = 1000UL * 50, /* 50 kBit/sec */ - CAN20kBaud = 1000UL * 20, /* 20 kBit/sec */ - CAN10kBaud = 1000UL * 10 /* 10 kBit/sec */ -}; - -#define RT_CAN_MODE_NORMAL 0 -#define RT_CAN_MODE_LISTEN 1 -#define RT_CAN_MODE_LOOPBACK 2 -#define RT_CAN_MODE_LOOPBACKANLISTEN 3 - -#define RT_CAN_MODE_PRIV 0x01 -#define RT_CAN_MODE_NOPRIV 0x00 - -/** @defgroup CAN_receive_FIFO_number CAN Receive FIFO Number - * @{ - */ -#define CAN_RX_FIFO0 (0x00000000U) /*!< CAN receive FIFO 0 */ -#define CAN_RX_FIFO1 (0x00000001U) /*!< CAN receive FIFO 1 */ - -struct rt_can_filter_item -{ - rt_uint32_t id : 29; - rt_uint32_t ide : 1; - rt_uint32_t rtr : 1; - rt_uint32_t mode : 1; - rt_uint32_t mask; - rt_int32_t hdr_bank;/*Should be defined as:rx.FilterBank,which should be changed to rt_int32_t hdr_bank*/ - rt_uint32_t rxfifo;/*Add a configuration item that CAN_RX_FIFO0/CAN_RX_FIFO1*/ -#ifdef RT_CAN_USING_HDR - rt_err_t (*ind)(rt_device_t dev, void *args , rt_int32_t hdr, rt_size_t size); - void *args; -#endif /*RT_CAN_USING_HDR*/ -}; - - -#ifdef RT_CAN_USING_HDR -#define RT_CAN_FILTER_ITEM_INIT(id,ide,rtr,mode,mask,ind,args) \ - {(id), (ide), (rtr), (mode),(mask), -1, CAN_RX_FIFO0,(ind), (args)}/*0:CAN_RX_FIFO0*/ -#define RT_CAN_FILTER_STD_INIT(id,ind,args) \ - RT_CAN_FILTER_ITEM_INIT(id,0,0,0,0xFFFFFFFF,ind,args) -#define RT_CAN_FILTER_EXT_INIT(id,ind,args) \ - RT_CAN_FILTER_ITEM_INIT(id,1,0,0,0xFFFFFFFF,ind,args) -#define RT_CAN_STD_RMT_FILTER_INIT(id,ind,args) \ - RT_CAN_FILTER_ITEM_INIT(id,0,1,0,0xFFFFFFFF,ind,args) -#define RT_CAN_EXT_RMT_FILTER_INIT(id,ind,args) \ - RT_CAN_FILTER_ITEM_INIT(id,1,1,0,0xFFFFFFFF,ind,args) -#define RT_CAN_STD_RMT_DATA_FILTER_INIT(id,ind,args) \ - RT_CAN_FILTER_ITEM_INIT(id,0,0,1,0xFFFFFFFF,ind,args) -#define RT_CAN_EXT_RMT_DATA_FILTER_INIT(id,ind,args) \ - RT_CAN_FILTER_ITEM_INIT(id,1,0,1,0xFFFFFFFF,ind,args) -#else - -#define RT_CAN_FILTER_ITEM_INIT(id,ide,rtr,mode,mask) \ - {(id), (ide), (rtr), (mode), (mask), -1, CAN_RX_FIFO0 }/*0:CAN_RX_FIFO0*/ -#define RT_CAN_FILTER_STD_INIT(id) \ - RT_CAN_FILTER_ITEM_INIT(id,0,0,0,0xFFFFFFFF) -#define RT_CAN_FILTER_EXT_INIT(id) \ - RT_CAN_FILTER_ITEM_INIT(id,1,0,0,0xFFFFFFFF) -#define RT_CAN_STD_RMT_FILTER_INIT(id) \ - RT_CAN_FILTER_ITEM_INIT(id,0,1,0,0xFFFFFFFF) -#define RT_CAN_EXT_RMT_FILTER_INIT(id) \ - RT_CAN_FILTER_ITEM_INIT(id,1,1,0,0xFFFFFFFF) -#define RT_CAN_STD_RMT_DATA_FILTER_INIT(id) \ - RT_CAN_FILTER_ITEM_INIT(id,0,0,1,0xFFFFFFFF) -#define RT_CAN_EXT_RMT_DATA_FILTER_INIT(id) \ - RT_CAN_FILTER_ITEM_INIT(id,1,0,1,0xFFFFFFFF) -#endif - -struct rt_can_filter_config -{ - rt_uint32_t count; - rt_uint32_t actived; - struct rt_can_filter_item *items; -}; - -struct rt_can_bit_timing -{ - rt_uint16_t prescaler; /* Pre-scaler */ - rt_uint16_t num_seg1; /* Bit Timing Segment 1, in terms of Tq */ - rt_uint16_t num_seg2; /* Bit Timing Segment 2, in terms of Tq */ - rt_uint8_t num_sjw; /* Synchronization Jump Width, in terms of Tq */ - rt_uint8_t num_sspoff; /* Secondary Sample Point Offset, in terms of Tq */ -}; - -/** - * CAN bit timing configuration list - * NOTE: - * items[0] always for CAN2.0/CANFD Arbitration Phase - * items[1] always for CANFD (if it exists) - */ -struct rt_can_bit_timing_config -{ - rt_uint32_t count; - struct rt_can_bit_timing *items; -}; - -struct can_configure -{ - rt_uint32_t baud_rate; - rt_uint32_t msgboxsz; - rt_uint32_t sndboxnumber; - rt_uint32_t mode : 8; - rt_uint32_t privmode : 8; - rt_uint32_t reserved : 16; - rt_uint32_t ticks; -#ifdef RT_CAN_USING_HDR - rt_uint32_t maxhdr; -#endif - -#ifdef RT_CAN_USING_CANFD - rt_uint32_t baud_rate_fd; /* CANFD data bit rate*/ - rt_uint32_t use_bit_timing: 8; /* Use the bit timing for CAN timing configuration */ - rt_uint32_t enable_canfd : 8; /* Enable CAN-FD mode */ - rt_uint32_t reserved1 : 16; - - /* The below fields take effect only if use_bit_timing is non-zero */ - struct rt_can_bit_timing can_timing; /* CAN bit-timing /CANFD bit-timing for arbitration phase */ - struct rt_can_bit_timing canfd_timing; /* CANFD bit-timing for datat phase */ -#endif -}; - -#define CANDEFAULTCONFIG \ -{\ - CAN1MBaud,\ - RT_CANMSG_BOX_SZ,\ - RT_CANSND_BOX_NUM,\ - RT_CAN_MODE_NORMAL,\ -}; - -struct rt_can_ops; -#define RT_CAN_CMD_SET_FILTER 0x13 -#define RT_CAN_CMD_SET_BAUD 0x14 -#define RT_CAN_CMD_SET_MODE 0x15 -#define RT_CAN_CMD_SET_PRIV 0x16 -#define RT_CAN_CMD_GET_STATUS 0x17 -#define RT_CAN_CMD_SET_STATUS_IND 0x18 -#define RT_CAN_CMD_SET_BUS_HOOK 0x19 -#define RT_CAN_CMD_SET_CANFD 0x1A -#define RT_CAN_CMD_SET_BAUD_FD 0x1B -#define RT_CAN_CMD_SET_BITTIMING 0x1C - -#define RT_DEVICE_CAN_INT_ERR 0x1000 - -enum RT_CAN_STATUS_MODE -{ - NORMAL = 0, - ERRWARNING = 1, - ERRPASSIVE = 2, - BUSOFF = 4, -}; -enum RT_CAN_BUS_ERR -{ - RT_CAN_BUS_NO_ERR = 0, - RT_CAN_BUS_BIT_PAD_ERR = 1, - RT_CAN_BUS_FORMAT_ERR = 2, - RT_CAN_BUS_ACK_ERR = 3, - RT_CAN_BUS_IMPLICIT_BIT_ERR = 4, - RT_CAN_BUS_EXPLICIT_BIT_ERR = 5, - RT_CAN_BUS_CRC_ERR = 6, -}; - -struct rt_can_status -{ - rt_uint32_t rcverrcnt; - rt_uint32_t snderrcnt; - rt_uint32_t errcode; - rt_uint32_t rcvpkg; - rt_uint32_t dropedrcvpkg; - rt_uint32_t sndpkg; - rt_uint32_t dropedsndpkg; - rt_uint32_t bitpaderrcnt; - rt_uint32_t formaterrcnt; - rt_uint32_t ackerrcnt; - rt_uint32_t biterrcnt; - rt_uint32_t crcerrcnt; - rt_uint32_t rcvchange; - rt_uint32_t sndchange; - rt_uint32_t lasterrtype; -}; - -#ifdef RT_CAN_USING_HDR -struct rt_can_hdr -{ - rt_uint32_t connected; - rt_uint32_t msgs; - struct rt_can_filter_item filter; - struct rt_list_node list; -}; -#endif -struct rt_can_device; -typedef rt_err_t (*rt_canstatus_ind)(struct rt_can_device *, void *); -typedef struct rt_can_status_ind_type -{ - rt_canstatus_ind ind; - void *args; -} *rt_can_status_ind_type_t; -typedef void (*rt_can_bus_hook)(struct rt_can_device *); -struct rt_can_device -{ - struct rt_device parent; - - const struct rt_can_ops *ops; - struct can_configure config; - struct rt_can_status status; - - rt_uint32_t timerinitflag; - struct rt_timer timer; - - struct rt_can_status_ind_type status_indicate; -#ifdef RT_CAN_USING_HDR - struct rt_can_hdr *hdr; -#endif -#ifdef RT_CAN_USING_BUS_HOOK - rt_can_bus_hook bus_hook; -#endif /*RT_CAN_USING_BUS_HOOK*/ - struct rt_mutex lock; - void *can_rx; - void *can_tx; -}; -typedef struct rt_can_device *rt_can_t; - -#define RT_CAN_STDID 0 -#define RT_CAN_EXTID 1 -#define RT_CAN_DTR 0 -#define RT_CAN_RTR 1 - -typedef struct rt_can_status *rt_can_status_t; - -struct rt_can_msg -{ - rt_uint32_t id : 29; - rt_uint32_t ide : 1; - rt_uint32_t rtr : 1; - rt_uint32_t rsv : 1; - rt_uint32_t len : 8; - rt_uint32_t priv : 8; - rt_int32_t hdr_index : 8;/*Should be defined as:rx.FilterMatchIndex,which should be changed to rt_int32_t hdr_index : 8*/ -#ifdef RT_CAN_USING_CANFD - rt_uint32_t fd_frame : 1; - rt_uint32_t brs : 1; - rt_uint32_t rxfifo : 2;/*Redefined to return :CAN RX FIFO0/CAN RX FIFO1*/ - rt_uint32_t reserved : 4; -#else - rt_uint32_t rxfifo : 2;/*Redefined to return :CAN RX FIFO0/CAN RX FIFO1*/ - rt_uint32_t reserved : 6; -#endif -#ifdef RT_CAN_USING_CANFD - rt_uint8_t data[64]; -#else - rt_uint8_t data[8]; -#endif -}; -typedef struct rt_can_msg *rt_can_msg_t; - -struct rt_can_msg_list -{ - struct rt_list_node list; -#ifdef RT_CAN_USING_HDR - struct rt_list_node hdrlist; - struct rt_can_hdr *owner; -#endif - struct rt_can_msg data; -}; - -struct rt_can_rx_fifo -{ - /* software fifo */ - struct rt_can_msg_list *buffer; - rt_uint32_t freenumbers; - struct rt_list_node freelist; - struct rt_list_node uselist; -}; - -#define RT_CAN_SND_RESULT_OK 0 -#define RT_CAN_SND_RESULT_ERR 1 -#define RT_CAN_SND_RESULT_WAIT 2 - -#define RT_CAN_EVENT_RX_IND 0x01 /* Rx indication */ -#define RT_CAN_EVENT_TX_DONE 0x02 /* Tx complete */ -#define RT_CAN_EVENT_TX_FAIL 0x03 /* Tx fail */ -#define RT_CAN_EVENT_RX_TIMEOUT 0x05 /* Rx timeout */ -#define RT_CAN_EVENT_RXOF_IND 0x06 /* Rx overflow */ - -struct rt_can_sndbxinx_list -{ - struct rt_list_node list; - struct rt_completion completion; - rt_uint32_t result; -}; - -struct rt_can_tx_fifo -{ - struct rt_can_sndbxinx_list *buffer; - struct rt_semaphore sem; - struct rt_list_node freelist; -}; - -struct rt_can_ops -{ - rt_err_t (*configure)(struct rt_can_device *can, struct can_configure *cfg); - rt_err_t (*control)(struct rt_can_device *can, int cmd, void *arg); - rt_ssize_t (*sendmsg)(struct rt_can_device *can, const void *buf, rt_uint32_t boxno); - rt_ssize_t (*recvmsg)(struct rt_can_device *can, void *buf, rt_uint32_t boxno); -}; - -rt_err_t rt_hw_can_register(struct rt_can_device *can, - const char *name, - const struct rt_can_ops *ops, - void *data); -void rt_hw_can_isr(struct rt_can_device *can, int event); -#endif /*_CAN_H*/ - diff --git a/components/drivers/include/drivers/dev_alarm.h b/components/drivers/include/drivers/dev_alarm.h new file mode 100644 index 0000000000..4553569260 --- /dev/null +++ b/components/drivers/include/drivers/dev_alarm.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2012-10-27 heyuanjie87 first version. + * 2013-05-17 aozima initial alarm event & mutex in system init. + * 2020-10-15 zhangsz add alarm flags hour minute second. + */ + +#ifndef __DEV_ALARM_H__ +#define __DEV_ALARM_H__ + +#include +#include + +#define RT_ALARM_TM_NOW -1 /* set the alarm tm_day,tm_mon,tm_sec,etc. + to now.we also call it "don't care" value */ + +/* alarm flags */ +#define RT_ALARM_ONESHOT 0x000 /* only alarm once */ +#define RT_ALARM_DAILY 0x100 /* alarm everyday */ +#define RT_ALARM_WEEKLY 0x200 /* alarm weekly at Monday or Friday etc. */ +#define RT_ALARM_MONTHLY 0x400 /* alarm monthly at someday */ +#define RT_ALARM_YAERLY 0x800 /* alarm yearly at a certain date */ +#define RT_ALARM_HOUR 0x1000 /* alarm each hour at a certain min:second */ +#define RT_ALARM_MINUTE 0x2000 /* alarm each minute at a certain second */ +#define RT_ALARM_SECOND 0x4000 /* alarm each second */ + +#define RT_ALARM_STATE_INITED 0x02 +#define RT_ALARM_STATE_START 0x01 +#define RT_ALARM_STATE_STOP 0x00 + +/* alarm control cmd */ +#define RT_ALARM_CTRL_MODIFY 1 /* modify alarm time or alarm flag */ + +typedef struct rt_alarm *rt_alarm_t; +typedef void (*rt_alarm_callback_t)(rt_alarm_t alarm, time_t timestamp); + +struct rt_alarm +{ + rt_list_t list; + rt_uint32_t flag; + rt_alarm_callback_t callback; + struct tm wktime; + + void *user_data; +}; + +struct rt_alarm_setup +{ + rt_uint32_t flag; /* alarm flag */ + struct tm wktime; /* when will the alarm wake up user */ +}; + +struct rt_alarm_container +{ + rt_list_t head; + struct rt_mutex mutex; + struct rt_event event; + struct rt_alarm *current; +}; + +rt_alarm_t rt_alarm_create(rt_alarm_callback_t callback, + struct rt_alarm_setup *setup); +rt_err_t rt_alarm_control(rt_alarm_t alarm, int cmd, void *arg); +void rt_alarm_update(rt_device_t dev, rt_uint32_t event); +rt_err_t rt_alarm_delete(rt_alarm_t alarm); +rt_err_t rt_alarm_start(rt_alarm_t alarm); +rt_err_t rt_alarm_stop(rt_alarm_t alarm); +int rt_alarm_system_init(void); + +#endif /* __DEV_ALARM_H__ */ diff --git a/components/drivers/include/drivers/dev_audio.h b/components/drivers/include/drivers/dev_audio.h new file mode 100644 index 0000000000..ef92a935ab --- /dev/null +++ b/components/drivers/include/drivers/dev_audio.h @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2017-05-09 Urey first version + * 2019-07-09 Zero-Free improve device ops interface and data flows + * + */ + +#ifndef __DEV_AUDIO_H__ +#define __DEV_AUDIO_H__ + +#include "dev_audio_pipe.h" + +/* AUDIO command */ +#define _AUDIO_CTL(a) (RT_DEVICE_CTRL_BASE(Sound) + a) + +#define AUDIO_CTL_GETCAPS _AUDIO_CTL(1) +#define AUDIO_CTL_CONFIGURE _AUDIO_CTL(2) +#define AUDIO_CTL_START _AUDIO_CTL(3) +#define AUDIO_CTL_STOP _AUDIO_CTL(4) +#define AUDIO_CTL_GETBUFFERINFO _AUDIO_CTL(5) + +/* Audio Device Types */ +#define AUDIO_TYPE_QUERY 0x00 +#define AUDIO_TYPE_INPUT 0x01 +#define AUDIO_TYPE_OUTPUT 0x02 +#define AUDIO_TYPE_MIXER 0x04 + +/* Supported Sampling Rates */ +#define AUDIO_SAMP_RATE_8K 0x0001 +#define AUDIO_SAMP_RATE_11K 0x0002 +#define AUDIO_SAMP_RATE_16K 0x0004 +#define AUDIO_SAMP_RATE_22K 0x0008 +#define AUDIO_SAMP_RATE_32K 0x0010 +#define AUDIO_SAMP_RATE_44K 0x0020 +#define AUDIO_SAMP_RATE_48K 0x0040 +#define AUDIO_SAMP_RATE_96K 0x0080 +#define AUDIO_SAMP_RATE_128K 0x0100 +#define AUDIO_SAMP_RATE_160K 0x0200 +#define AUDIO_SAMP_RATE_172K 0x0400 +#define AUDIO_SAMP_RATE_192K 0x0800 + +/* Supported Bit Rates */ +#define AUDIO_BIT_RATE_22K 0x01 +#define AUDIO_BIT_RATE_44K 0x02 +#define AUDIO_BIT_RATE_48K 0x04 +#define AUDIO_BIT_RATE_96K 0x08 +#define AUDIO_BIT_RATE_128K 0x10 +#define AUDIO_BIT_RATE_160K 0x20 +#define AUDIO_BIT_RATE_172K 0x40 +#define AUDIO_BIT_RATE_192K 0x80 + +/* Support Dsp(input/output) Units controls */ +#define AUDIO_DSP_PARAM 0 /* get/set all params */ +#define AUDIO_DSP_SAMPLERATE 1 /* samplerate */ +#define AUDIO_DSP_CHANNELS 2 /* channels */ +#define AUDIO_DSP_SAMPLEBITS 3 /* sample bits width */ + +/* Supported Mixer Units controls */ +#define AUDIO_MIXER_QUERY 0x0000 +#define AUDIO_MIXER_MUTE 0x0001 +#define AUDIO_MIXER_VOLUME 0x0002 +#define AUDIO_MIXER_BASS 0x0004 +#define AUDIO_MIXER_MID 0x0008 +#define AUDIO_MIXER_TREBLE 0x0010 +#define AUDIO_MIXER_EQUALIZER 0x0020 +#define AUDIO_MIXER_LINE 0x0040 +#define AUDIO_MIXER_DIGITAL 0x0080 +#define AUDIO_MIXER_MIC 0x0100 +#define AUDIO_MIXER_VITURAL 0x0200 +#define AUDIO_MIXER_EXTEND 0x8000 /* extend mixer command */ + +#define AUDIO_VOLUME_MAX (100) +#define AUDIO_VOLUME_MIN (0) + +#define CFG_AUDIO_REPLAY_QUEUE_COUNT 4 + +enum +{ + AUDIO_STREAM_REPLAY = 0, + AUDIO_STREAM_RECORD, + AUDIO_STREAM_LAST = AUDIO_STREAM_RECORD, +}; + +/* the preferred number and size of audio pipeline buffer for the audio device */ +struct rt_audio_buf_info +{ + rt_uint8_t *buffer; + rt_uint16_t block_size; + rt_uint16_t block_count; + rt_uint32_t total_size; +}; + +struct rt_audio_device; +struct rt_audio_caps; +struct rt_audio_configure; +struct rt_audio_ops +{ + rt_err_t (*getcaps)(struct rt_audio_device *audio, struct rt_audio_caps *caps); + rt_err_t (*configure)(struct rt_audio_device *audio, struct rt_audio_caps *caps); + rt_err_t (*init)(struct rt_audio_device *audio); + rt_err_t (*start)(struct rt_audio_device *audio, int stream); + rt_err_t (*stop)(struct rt_audio_device *audio, int stream); + rt_ssize_t (*transmit)(struct rt_audio_device *audio, const void *writeBuf, void *readBuf, rt_size_t size); + /* get page size of codec or private buffer's info */ + void (*buffer_info)(struct rt_audio_device *audio, struct rt_audio_buf_info *info); +}; + +struct rt_audio_configure +{ + rt_uint32_t samplerate; + rt_uint16_t channels; + rt_uint16_t samplebits; +}; + +struct rt_audio_caps +{ + int main_type; + int sub_type; + + union + { + rt_uint32_t mask; + int value; + struct rt_audio_configure config; + } udata; +}; + +struct rt_audio_replay +{ + struct rt_mempool *mp; + struct rt_data_queue queue; + struct rt_mutex lock; + struct rt_completion cmp; + struct rt_audio_buf_info buf_info; + rt_uint8_t *write_data; + rt_uint16_t write_index; + rt_uint16_t read_index; + rt_uint32_t pos; + rt_uint8_t event; + rt_bool_t activated; +}; + +struct rt_audio_record +{ + struct rt_audio_pipe pipe; + rt_bool_t activated; +}; + +struct rt_audio_device +{ + struct rt_device parent; + struct rt_audio_ops *ops; + struct rt_audio_replay *replay; + struct rt_audio_record *record; +}; + +rt_err_t rt_audio_register(struct rt_audio_device *audio, const char *name, rt_uint32_t flag, void *data); +void rt_audio_tx_complete(struct rt_audio_device *audio); +void rt_audio_rx_done(struct rt_audio_device *audio, rt_uint8_t *pbuf, rt_size_t len); + +/* Device Control Commands */ +#define CODEC_CMD_RESET 0 +#define CODEC_CMD_SET_VOLUME 1 +#define CODEC_CMD_GET_VOLUME 2 +#define CODEC_CMD_SAMPLERATE 3 +#define CODEC_CMD_EQ 4 +#define CODEC_CMD_3D 5 + +#define CODEC_VOLUME_MAX (63) + +#endif /* __DEV_AUDIO_H__ */ diff --git a/components/drivers/include/drivers/dev_can.h b/components/drivers/include/drivers/dev_can.h new file mode 100644 index 0000000000..9f2d7c0677 --- /dev/null +++ b/components/drivers/include/drivers/dev_can.h @@ -0,0 +1,364 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2015-05-14 aubrcool@qq.com first version + * 2015-07-06 Bernard remove RT_CAN_USING_LED. + * 2022-05-08 hpmicro add CANFD support, fixed typos + */ + +#ifndef __DEV_CAN_H_ +#define __DEV_CAN_H_ + +#include + +#ifndef RT_CANMSG_BOX_SZ +#define RT_CANMSG_BOX_SZ 16 +#endif +#ifndef RT_CANSND_BOX_NUM +#define RT_CANSND_BOX_NUM 1 +#endif + +enum CAN_DLC +{ + CAN_MSG_0BYTE = 0, + CAN_MSG_1BYTE, + CAN_MSG_2BYTES, + CAN_MSG_3BYTES, + CAN_MSG_4BYTES, + CAN_MSG_5BYTES, + CAN_MSG_6BYTES, + CAN_MSG_7BYTES, + CAN_MSG_8BYTES, + CAN_MSG_12BYTES, + CAN_MSG_16BYTES, + CAN_MSG_20BYTES, + CAN_MSG_24BYTES, + CAN_MSG_32BYTES, + CAN_MSG_48BYTES, + CAN_MSG_64BYTES, +}; + +enum CANBAUD +{ + CAN1MBaud = 1000UL * 1000,/* 1 MBit/sec */ + CAN800kBaud = 1000UL * 800, /* 800 kBit/sec */ + CAN500kBaud = 1000UL * 500, /* 500 kBit/sec */ + CAN250kBaud = 1000UL * 250, /* 250 kBit/sec */ + CAN125kBaud = 1000UL * 125, /* 125 kBit/sec */ + CAN100kBaud = 1000UL * 100, /* 100 kBit/sec */ + CAN50kBaud = 1000UL * 50, /* 50 kBit/sec */ + CAN20kBaud = 1000UL * 20, /* 20 kBit/sec */ + CAN10kBaud = 1000UL * 10 /* 10 kBit/sec */ +}; + +#define RT_CAN_MODE_NORMAL 0 +#define RT_CAN_MODE_LISTEN 1 +#define RT_CAN_MODE_LOOPBACK 2 +#define RT_CAN_MODE_LOOPBACKANLISTEN 3 + +#define RT_CAN_MODE_PRIV 0x01 +#define RT_CAN_MODE_NOPRIV 0x00 + +/** @defgroup CAN_receive_FIFO_number CAN Receive FIFO Number + * @{ + */ +#define CAN_RX_FIFO0 (0x00000000U) /*!< CAN receive FIFO 0 */ +#define CAN_RX_FIFO1 (0x00000001U) /*!< CAN receive FIFO 1 */ + +struct rt_can_filter_item +{ + rt_uint32_t id : 29; + rt_uint32_t ide : 1; + rt_uint32_t rtr : 1; + rt_uint32_t mode : 1; + rt_uint32_t mask; + rt_int32_t hdr_bank;/*Should be defined as:rx.FilterBank,which should be changed to rt_int32_t hdr_bank*/ + rt_uint32_t rxfifo;/*Add a configuration item that CAN_RX_FIFO0/CAN_RX_FIFO1*/ +#ifdef RT_CAN_USING_HDR + rt_err_t (*ind)(rt_device_t dev, void *args , rt_int32_t hdr, rt_size_t size); + void *args; +#endif /*RT_CAN_USING_HDR*/ +}; + + +#ifdef RT_CAN_USING_HDR +#define RT_CAN_FILTER_ITEM_INIT(id,ide,rtr,mode,mask,ind,args) \ + {(id), (ide), (rtr), (mode),(mask), -1, CAN_RX_FIFO0,(ind), (args)}/*0:CAN_RX_FIFO0*/ +#define RT_CAN_FILTER_STD_INIT(id,ind,args) \ + RT_CAN_FILTER_ITEM_INIT(id,0,0,0,0xFFFFFFFF,ind,args) +#define RT_CAN_FILTER_EXT_INIT(id,ind,args) \ + RT_CAN_FILTER_ITEM_INIT(id,1,0,0,0xFFFFFFFF,ind,args) +#define RT_CAN_STD_RMT_FILTER_INIT(id,ind,args) \ + RT_CAN_FILTER_ITEM_INIT(id,0,1,0,0xFFFFFFFF,ind,args) +#define RT_CAN_EXT_RMT_FILTER_INIT(id,ind,args) \ + RT_CAN_FILTER_ITEM_INIT(id,1,1,0,0xFFFFFFFF,ind,args) +#define RT_CAN_STD_RMT_DATA_FILTER_INIT(id,ind,args) \ + RT_CAN_FILTER_ITEM_INIT(id,0,0,1,0xFFFFFFFF,ind,args) +#define RT_CAN_EXT_RMT_DATA_FILTER_INIT(id,ind,args) \ + RT_CAN_FILTER_ITEM_INIT(id,1,0,1,0xFFFFFFFF,ind,args) +#else + +#define RT_CAN_FILTER_ITEM_INIT(id,ide,rtr,mode,mask) \ + {(id), (ide), (rtr), (mode), (mask), -1, CAN_RX_FIFO0 }/*0:CAN_RX_FIFO0*/ +#define RT_CAN_FILTER_STD_INIT(id) \ + RT_CAN_FILTER_ITEM_INIT(id,0,0,0,0xFFFFFFFF) +#define RT_CAN_FILTER_EXT_INIT(id) \ + RT_CAN_FILTER_ITEM_INIT(id,1,0,0,0xFFFFFFFF) +#define RT_CAN_STD_RMT_FILTER_INIT(id) \ + RT_CAN_FILTER_ITEM_INIT(id,0,1,0,0xFFFFFFFF) +#define RT_CAN_EXT_RMT_FILTER_INIT(id) \ + RT_CAN_FILTER_ITEM_INIT(id,1,1,0,0xFFFFFFFF) +#define RT_CAN_STD_RMT_DATA_FILTER_INIT(id) \ + RT_CAN_FILTER_ITEM_INIT(id,0,0,1,0xFFFFFFFF) +#define RT_CAN_EXT_RMT_DATA_FILTER_INIT(id) \ + RT_CAN_FILTER_ITEM_INIT(id,1,0,1,0xFFFFFFFF) +#endif + +struct rt_can_filter_config +{ + rt_uint32_t count; + rt_uint32_t actived; + struct rt_can_filter_item *items; +}; + +struct rt_can_bit_timing +{ + rt_uint16_t prescaler; /* Pre-scaler */ + rt_uint16_t num_seg1; /* Bit Timing Segment 1, in terms of Tq */ + rt_uint16_t num_seg2; /* Bit Timing Segment 2, in terms of Tq */ + rt_uint8_t num_sjw; /* Synchronization Jump Width, in terms of Tq */ + rt_uint8_t num_sspoff; /* Secondary Sample Point Offset, in terms of Tq */ +}; + +/** + * CAN bit timing configuration list + * NOTE: + * items[0] always for CAN2.0/CANFD Arbitration Phase + * items[1] always for CANFD (if it exists) + */ +struct rt_can_bit_timing_config +{ + rt_uint32_t count; + struct rt_can_bit_timing *items; +}; + +struct can_configure +{ + rt_uint32_t baud_rate; + rt_uint32_t msgboxsz; + rt_uint32_t sndboxnumber; + rt_uint32_t mode : 8; + rt_uint32_t privmode : 8; + rt_uint32_t reserved : 16; + rt_uint32_t ticks; +#ifdef RT_CAN_USING_HDR + rt_uint32_t maxhdr; +#endif + +#ifdef RT_CAN_USING_CANFD + rt_uint32_t baud_rate_fd; /* CANFD data bit rate*/ + rt_uint32_t use_bit_timing: 8; /* Use the bit timing for CAN timing configuration */ + rt_uint32_t enable_canfd : 8; /* Enable CAN-FD mode */ + rt_uint32_t reserved1 : 16; + + /* The below fields take effect only if use_bit_timing is non-zero */ + struct rt_can_bit_timing can_timing; /* CAN bit-timing /CANFD bit-timing for arbitration phase */ + struct rt_can_bit_timing canfd_timing; /* CANFD bit-timing for datat phase */ +#endif +}; + +#define CANDEFAULTCONFIG \ +{\ + CAN1MBaud,\ + RT_CANMSG_BOX_SZ,\ + RT_CANSND_BOX_NUM,\ + RT_CAN_MODE_NORMAL,\ +}; + +struct rt_can_ops; +#define RT_CAN_CMD_SET_FILTER 0x13 +#define RT_CAN_CMD_SET_BAUD 0x14 +#define RT_CAN_CMD_SET_MODE 0x15 +#define RT_CAN_CMD_SET_PRIV 0x16 +#define RT_CAN_CMD_GET_STATUS 0x17 +#define RT_CAN_CMD_SET_STATUS_IND 0x18 +#define RT_CAN_CMD_SET_BUS_HOOK 0x19 +#define RT_CAN_CMD_SET_CANFD 0x1A +#define RT_CAN_CMD_SET_BAUD_FD 0x1B +#define RT_CAN_CMD_SET_BITTIMING 0x1C + +#define RT_DEVICE_CAN_INT_ERR 0x1000 + +enum RT_CAN_STATUS_MODE +{ + NORMAL = 0, + ERRWARNING = 1, + ERRPASSIVE = 2, + BUSOFF = 4, +}; +enum RT_CAN_BUS_ERR +{ + RT_CAN_BUS_NO_ERR = 0, + RT_CAN_BUS_BIT_PAD_ERR = 1, + RT_CAN_BUS_FORMAT_ERR = 2, + RT_CAN_BUS_ACK_ERR = 3, + RT_CAN_BUS_IMPLICIT_BIT_ERR = 4, + RT_CAN_BUS_EXPLICIT_BIT_ERR = 5, + RT_CAN_BUS_CRC_ERR = 6, +}; + +struct rt_can_status +{ + rt_uint32_t rcverrcnt; + rt_uint32_t snderrcnt; + rt_uint32_t errcode; + rt_uint32_t rcvpkg; + rt_uint32_t dropedrcvpkg; + rt_uint32_t sndpkg; + rt_uint32_t dropedsndpkg; + rt_uint32_t bitpaderrcnt; + rt_uint32_t formaterrcnt; + rt_uint32_t ackerrcnt; + rt_uint32_t biterrcnt; + rt_uint32_t crcerrcnt; + rt_uint32_t rcvchange; + rt_uint32_t sndchange; + rt_uint32_t lasterrtype; +}; + +#ifdef RT_CAN_USING_HDR +struct rt_can_hdr +{ + rt_uint32_t connected; + rt_uint32_t msgs; + struct rt_can_filter_item filter; + struct rt_list_node list; +}; +#endif +struct rt_can_device; +typedef rt_err_t (*rt_canstatus_ind)(struct rt_can_device *, void *); +typedef struct rt_can_status_ind_type +{ + rt_canstatus_ind ind; + void *args; +} *rt_can_status_ind_type_t; +typedef void (*rt_can_bus_hook)(struct rt_can_device *); +struct rt_can_device +{ + struct rt_device parent; + + const struct rt_can_ops *ops; + struct can_configure config; + struct rt_can_status status; + + rt_uint32_t timerinitflag; + struct rt_timer timer; + + struct rt_can_status_ind_type status_indicate; +#ifdef RT_CAN_USING_HDR + struct rt_can_hdr *hdr; +#endif +#ifdef RT_CAN_USING_BUS_HOOK + rt_can_bus_hook bus_hook; +#endif /*RT_CAN_USING_BUS_HOOK*/ + struct rt_mutex lock; + void *can_rx; + void *can_tx; +}; +typedef struct rt_can_device *rt_can_t; + +#define RT_CAN_STDID 0 +#define RT_CAN_EXTID 1 +#define RT_CAN_DTR 0 +#define RT_CAN_RTR 1 + +typedef struct rt_can_status *rt_can_status_t; + +struct rt_can_msg +{ + rt_uint32_t id : 29; + rt_uint32_t ide : 1; + rt_uint32_t rtr : 1; + rt_uint32_t rsv : 1; + rt_uint32_t len : 8; + rt_uint32_t priv : 8; + rt_int32_t hdr_index : 8;/*Should be defined as:rx.FilterMatchIndex,which should be changed to rt_int32_t hdr_index : 8*/ +#ifdef RT_CAN_USING_CANFD + rt_uint32_t fd_frame : 1; + rt_uint32_t brs : 1; + rt_uint32_t rxfifo : 2;/*Redefined to return :CAN RX FIFO0/CAN RX FIFO1*/ + rt_uint32_t reserved : 4; +#else + rt_uint32_t rxfifo : 2;/*Redefined to return :CAN RX FIFO0/CAN RX FIFO1*/ + rt_uint32_t reserved : 6; +#endif +#ifdef RT_CAN_USING_CANFD + rt_uint8_t data[64]; +#else + rt_uint8_t data[8]; +#endif +}; +typedef struct rt_can_msg *rt_can_msg_t; + +struct rt_can_msg_list +{ + struct rt_list_node list; +#ifdef RT_CAN_USING_HDR + struct rt_list_node hdrlist; + struct rt_can_hdr *owner; +#endif + struct rt_can_msg data; +}; + +struct rt_can_rx_fifo +{ + /* software fifo */ + struct rt_can_msg_list *buffer; + rt_uint32_t freenumbers; + struct rt_list_node freelist; + struct rt_list_node uselist; +}; + +#define RT_CAN_SND_RESULT_OK 0 +#define RT_CAN_SND_RESULT_ERR 1 +#define RT_CAN_SND_RESULT_WAIT 2 + +#define RT_CAN_EVENT_RX_IND 0x01 /* Rx indication */ +#define RT_CAN_EVENT_TX_DONE 0x02 /* Tx complete */ +#define RT_CAN_EVENT_TX_FAIL 0x03 /* Tx fail */ +#define RT_CAN_EVENT_RX_TIMEOUT 0x05 /* Rx timeout */ +#define RT_CAN_EVENT_RXOF_IND 0x06 /* Rx overflow */ + +struct rt_can_sndbxinx_list +{ + struct rt_list_node list; + struct rt_completion completion; + rt_uint32_t result; +}; + +struct rt_can_tx_fifo +{ + struct rt_can_sndbxinx_list *buffer; + struct rt_semaphore sem; + struct rt_list_node freelist; +}; + +struct rt_can_ops +{ + rt_err_t (*configure)(struct rt_can_device *can, struct can_configure *cfg); + rt_err_t (*control)(struct rt_can_device *can, int cmd, void *arg); + rt_ssize_t (*sendmsg)(struct rt_can_device *can, const void *buf, rt_uint32_t boxno); + rt_ssize_t (*recvmsg)(struct rt_can_device *can, void *buf, rt_uint32_t boxno); +}; + +rt_err_t rt_hw_can_register(struct rt_can_device *can, + const char *name, + const struct rt_can_ops *ops, + void *data); +void rt_hw_can_isr(struct rt_can_device *can, int event); +#endif /*__DEV_CAN_H*/ + diff --git a/components/drivers/include/drivers/dev_i2c.h b/components/drivers/include/drivers/dev_i2c.h new file mode 100644 index 0000000000..1a469eb473 --- /dev/null +++ b/components/drivers/include/drivers/dev_i2c.h @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2012-04-25 weety first version + * 2021-04-20 RiceChen added support for bus control api + */ + +#ifndef __DEV_I2C_H__ +#define __DEV_I2C_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define RT_I2C_WR 0x0000 +#define RT_I2C_RD (1u << 0) +#define RT_I2C_ADDR_10BIT (1u << 2) /* this is a ten bit chip address */ +#define RT_I2C_NO_START (1u << 4) +#define RT_I2C_IGNORE_NACK (1u << 5) +#define RT_I2C_NO_READ_ACK (1u << 6) /* when I2C reading, we do not ACK */ +#define RT_I2C_NO_STOP (1u << 7) + +#define RT_I2C_DEV_CTRL_10BIT (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x01) +#define RT_I2C_DEV_CTRL_ADDR (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x02) +#define RT_I2C_DEV_CTRL_TIMEOUT (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x03) +#define RT_I2C_DEV_CTRL_RW (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x04) +#define RT_I2C_DEV_CTRL_CLK (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x05) +#define RT_I2C_DEV_CTRL_UNLOCK (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x06) +#define RT_I2C_DEV_CTRL_GET_STATE (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x07) +#define RT_I2C_DEV_CTRL_GET_MODE (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x08) +#define RT_I2C_DEV_CTRL_GET_ERROR (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x09) + +struct rt_i2c_priv_data +{ + struct rt_i2c_msg *msgs; + rt_size_t number; +}; + +struct rt_i2c_msg +{ + rt_uint16_t addr; + rt_uint16_t flags; + rt_uint16_t len; + rt_uint8_t *buf; +}; + +struct rt_i2c_bus_device; + +struct rt_i2c_bus_device_ops +{ + rt_ssize_t (*master_xfer)(struct rt_i2c_bus_device *bus, + struct rt_i2c_msg msgs[], + rt_uint32_t num); + rt_ssize_t (*slave_xfer)(struct rt_i2c_bus_device *bus, + struct rt_i2c_msg msgs[], + rt_uint32_t num); + rt_err_t (*i2c_bus_control)(struct rt_i2c_bus_device *bus, + int cmd, + void *args); +}; + +/*for i2c bus driver*/ +struct rt_i2c_bus_device +{ + struct rt_device parent; + const struct rt_i2c_bus_device_ops *ops; + rt_uint16_t flags; + struct rt_mutex lock; + rt_uint32_t timeout; + rt_uint32_t retries; + void *priv; +}; + +struct rt_i2c_client +{ +#ifdef RT_USING_DM + struct rt_device parent; + + const char *name; + const struct rt_i2c_device_id *id; + const struct rt_ofw_node_id *ofw_id; +#endif + struct rt_i2c_bus_device *bus; + rt_uint16_t client_addr; +}; + +#ifdef RT_USING_DM +struct rt_i2c_device_id +{ + char name[20]; + void *data; +}; + +struct rt_i2c_driver +{ + struct rt_driver parent; + + const struct rt_i2c_device_id *ids; + const struct rt_ofw_node_id *ofw_ids; + + rt_err_t (*probe)(struct rt_i2c_client *client); + rt_err_t (*remove)(struct rt_i2c_client *client); + rt_err_t (*shutdown)(struct rt_i2c_client *client); +}; + +rt_err_t rt_i2c_driver_register(struct rt_i2c_driver *driver); +rt_err_t rt_i2c_device_register(struct rt_i2c_client *client); + +#define RT_I2C_DRIVER_EXPORT(driver) RT_DRIVER_EXPORT(driver, i2c, BUILIN) +#endif /* RT_USING_DM */ + +rt_err_t rt_i2c_bus_device_device_init(struct rt_i2c_bus_device *bus, + const char *name); + +rt_err_t rt_i2c_bus_device_register(struct rt_i2c_bus_device *bus, + const char *bus_name); +struct rt_i2c_bus_device *rt_i2c_bus_device_find(const char *bus_name); +rt_ssize_t rt_i2c_transfer(struct rt_i2c_bus_device *bus, + struct rt_i2c_msg msgs[], + rt_uint32_t num); +rt_err_t rt_i2c_control(struct rt_i2c_bus_device *bus, + int cmd, + void *args); +rt_ssize_t rt_i2c_master_send(struct rt_i2c_bus_device *bus, + rt_uint16_t addr, + rt_uint16_t flags, + const rt_uint8_t *buf, + rt_uint32_t count); +rt_ssize_t rt_i2c_master_recv(struct rt_i2c_bus_device *bus, + rt_uint16_t addr, + rt_uint16_t flags, + rt_uint8_t *buf, + rt_uint32_t count); + +rt_inline rt_err_t rt_i2c_bus_lock(struct rt_i2c_bus_device *bus, rt_tick_t timeout) +{ + return rt_mutex_take(&bus->lock, timeout); +} + +rt_inline rt_err_t rt_i2c_bus_unlock(struct rt_i2c_bus_device *bus) +{ + return rt_mutex_release(&bus->lock); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/drivers/include/drivers/dev_i2c_bit_ops.h b/components/drivers/include/drivers/dev_i2c_bit_ops.h new file mode 100644 index 0000000000..3c28714b92 --- /dev/null +++ b/components/drivers/include/drivers/dev_i2c_bit_ops.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2012-04-25 weety first version + */ + +#ifndef __DEV_I2C_BIT_OPS_H__ +#define __DEV_I2C_BIT_OPS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +struct rt_i2c_bit_ops +{ + void *data; /* private data for lowlevel routines */ + void (*set_sda)(void *data, rt_int32_t state); + void (*set_scl)(void *data, rt_int32_t state); + rt_int32_t (*get_sda)(void *data); + rt_int32_t (*get_scl)(void *data); + + void (*udelay)(rt_uint32_t us); + + rt_uint32_t delay_us; /* scl and sda line delay */ + rt_uint32_t timeout; /* in tick */ + + void (*pin_init)(void); + rt_bool_t i2c_pin_init_flag; +}; + +rt_err_t rt_i2c_bit_add_bus(struct rt_i2c_bus_device *bus, + const char *bus_name); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/drivers/include/drivers/dev_i2c_dm.h b/components/drivers/include/drivers/dev_i2c_dm.h new file mode 100644 index 0000000000..c59d6e9a82 --- /dev/null +++ b/components/drivers/include/drivers/dev_i2c_dm.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-11-26 GuEe-GUI first version + */ + +#ifndef __DEV_I2C_DM_H__ +#define __DEV_I2C_DM_H__ + +#include +#include +#include + +/* I2C Frequency Modes */ +#define I2C_MAX_STANDARD_MODE_FREQ 100000 +#define I2C_MAX_FAST_MODE_FREQ 400000 +#define I2C_MAX_FAST_MODE_PLUS_FREQ 1000000 +#define I2C_MAX_TURBO_MODE_FREQ 1400000 +#define I2C_MAX_HIGH_SPEED_MODE_FREQ 3400000 +#define I2C_MAX_ULTRA_FAST_MODE_FREQ 5000000 + +struct i2c_timings +{ + rt_uint32_t bus_freq_hz; /* the bus frequency in Hz */ + rt_uint32_t scl_rise_ns; /* time SCL signal takes to rise in ns; t(r) in the I2C specification */ + rt_uint32_t scl_fall_ns; /* time SCL signal takes to fall in ns; t(f) in the I2C specification */ + rt_uint32_t scl_int_delay_ns; /* time IP core additionally needs to setup SCL in ns */ + rt_uint32_t sda_fall_ns; /* time SDA signal takes to fall in ns; t(f) in the I2C specification */ + rt_uint32_t sda_hold_ns; /* time IP core additionally needs to hold SDA in ns */ + rt_uint32_t digital_filter_width_ns; /* width in ns of spikes on i2c lines that the IP core digital filter can filter out */ + rt_uint32_t analog_filter_cutoff_freq_hz; /* threshold frequency for the low pass IP core analog filter */ +}; + +#ifdef RT_USING_OFW +rt_err_t i2c_timings_ofw_parse(struct rt_ofw_node *dev_np, struct i2c_timings *timings, + rt_bool_t use_defaults); +#else +rt_inline rt_err_t i2c_timings_ofw_parse(struct rt_ofw_node *dev_np, struct i2c_timings *timings, + rt_bool_t use_defaults) +{ + return RT_EOK; +} +#endif /* RT_USING_OFW */ + +void i2c_bus_scan_clients(struct rt_i2c_bus_device *bus); + +#endif /* __DEV_I2C_DM_H__ */ diff --git a/components/drivers/include/drivers/dev_pin.h b/components/drivers/include/drivers/dev_pin.h new file mode 100644 index 0000000000..55289c0b1a --- /dev/null +++ b/components/drivers/include/drivers/dev_pin.h @@ -0,0 +1,178 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2015-01-20 Bernard the first version + * 2017-10-20 ZYH add mode open drain and input pull down + */ + +#ifndef DEV_PIN_H__ +#define DEV_PIN_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef RT_USING_DM +#include + +struct rt_pin_irqchip +{ + struct rt_pic parent; + + int irq; + rt_base_t pin_range[2]; +}; +#endif /* RT_USING_DM */ + +/* pin device and operations for RT-Thread */ +struct rt_device_pin +{ + struct rt_device parent; +#ifdef RT_USING_DM + struct rt_pin_irqchip irqchip; +#endif /* RT_USING_DM */ + const struct rt_pin_ops *ops; +}; + +#define PIN_NONE (-1) + +#define PIN_LOW 0x00 +#define PIN_HIGH 0x01 + +#define PIN_MODE_OUTPUT 0x00 +#define PIN_MODE_INPUT 0x01 +#define PIN_MODE_INPUT_PULLUP 0x02 +#define PIN_MODE_INPUT_PULLDOWN 0x03 +#define PIN_MODE_OUTPUT_OD 0x04 + +#ifdef RT_USING_PINCTRL +enum +{ + PIN_CONFIG_BIAS_BUS_HOLD, + PIN_CONFIG_BIAS_DISABLE, + PIN_CONFIG_BIAS_HIGH_IMPEDANCE, + PIN_CONFIG_BIAS_PULL_DOWN, + PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, + PIN_CONFIG_BIAS_PULL_UP, + PIN_CONFIG_DRIVE_OPEN_DRAIN, + PIN_CONFIG_DRIVE_OPEN_SOURCE, + PIN_CONFIG_DRIVE_PUSH_PULL, + PIN_CONFIG_DRIVE_STRENGTH, + PIN_CONFIG_DRIVE_STRENGTH_UA, + PIN_CONFIG_INPUT_DEBOUNCE, + PIN_CONFIG_INPUT_ENABLE, + PIN_CONFIG_INPUT_SCHMITT, + PIN_CONFIG_INPUT_SCHMITT_ENABLE, + PIN_CONFIG_MODE_LOW_POWER, + PIN_CONFIG_MODE_PWM, + PIN_CONFIG_OUTPUT, + PIN_CONFIG_OUTPUT_ENABLE, + PIN_CONFIG_OUTPUT_IMPEDANCE_OHMS, + PIN_CONFIG_PERSIST_STATE, + PIN_CONFIG_POWER_SOURCE, + PIN_CONFIG_SKEW_DELAY, + PIN_CONFIG_SLEEP_HARDWARE_STATE, + PIN_CONFIG_SLEW_RATE, + PIN_CONFIG_END = 0x7f, + PIN_CONFIG_MAX = 0xff, +}; +#endif /* RT_USING_PINCTRL */ + +#define PIN_IRQ_MODE_RISING 0x00 +#define PIN_IRQ_MODE_FALLING 0x01 +#define PIN_IRQ_MODE_RISING_FALLING 0x02 +#define PIN_IRQ_MODE_HIGH_LEVEL 0x03 +#define PIN_IRQ_MODE_LOW_LEVEL 0x04 + +#define PIN_IRQ_DISABLE 0x00 +#define PIN_IRQ_ENABLE 0x01 + +#define PIN_IRQ_PIN_NONE PIN_NONE + +struct rt_device_pin_mode +{ + rt_base_t pin; + rt_uint8_t mode; /* e.g. PIN_MODE_OUTPUT */ +}; + +struct rt_device_pin_value +{ + rt_base_t pin; + rt_uint8_t value; /* PIN_LOW or PIN_HIGH */ +}; + +struct rt_pin_irq_hdr +{ + rt_base_t pin; + rt_uint8_t mode; /* e.g. PIN_IRQ_MODE_RISING */ + void (*hdr)(void *args); + void *args; +}; + +#ifdef RT_USING_PINCTRL +struct rt_pin_ctrl_conf_params +{ + const char *propname; + rt_uint32_t param; + rt_uint32_t default_value; +}; +#endif /* RT_USING_PINCTRL */ + +struct rt_pin_ops +{ + void (*pin_mode)(struct rt_device *device, rt_base_t pin, rt_uint8_t mode); + void (*pin_write)(struct rt_device *device, rt_base_t pin, rt_uint8_t value); + rt_ssize_t (*pin_read)(struct rt_device *device, rt_base_t pin); + rt_err_t (*pin_attach_irq)(struct rt_device *device, rt_base_t pin, + rt_uint8_t mode, void (*hdr)(void *args), void *args); + rt_err_t (*pin_detach_irq)(struct rt_device *device, rt_base_t pin); + rt_err_t (*pin_irq_enable)(struct rt_device *device, rt_base_t pin, rt_uint8_t enabled); + rt_base_t (*pin_get)(const char *name); +#ifdef RT_USING_DM + rt_err_t (*pin_irq_mode)(struct rt_device *device, rt_base_t pin, rt_uint8_t mode); + rt_ssize_t (*pin_parse)(struct rt_device *device, struct rt_ofw_cell_args *args, rt_uint32_t *flags); +#endif +#ifdef RT_USING_PINCTRL + rt_err_t (*pin_ctrl_confs_apply)(struct rt_device *device, void *fw_conf_np); +#endif /* RT_USING_PINCTRL */ +}; + +int rt_device_pin_register(const char *name, const struct rt_pin_ops *ops, void *user_data); +void rt_pin_mode(rt_base_t pin, rt_uint8_t mode); +void rt_pin_write(rt_base_t pin, rt_ssize_t value); +rt_ssize_t rt_pin_read(rt_base_t pin); +rt_base_t rt_pin_get(const char *name); +rt_err_t rt_pin_attach_irq(rt_base_t pin, rt_uint8_t mode, + void (*hdr)(void *args), void *args); +rt_err_t rt_pin_detach_irq(rt_base_t pin); +rt_err_t rt_pin_irq_enable(rt_base_t pin, rt_uint8_t enabled); + +#ifdef RT_USING_DM +rt_ssize_t rt_pin_get_named_pin(struct rt_device *dev, const char *propname, int index, + rt_uint8_t *out_mode, rt_uint8_t *out_value); +rt_ssize_t rt_pin_get_named_pin_count(struct rt_device *dev, const char *propname); + +#ifdef RT_USING_OFW +rt_ssize_t rt_ofw_get_named_pin(struct rt_ofw_node *np, const char *propname, int index, + rt_uint8_t *out_mode, rt_uint8_t *out_value); +rt_ssize_t rt_ofw_get_named_pin_count(struct rt_ofw_node *np, const char *propname); +#endif +#endif /* RT_USING_DM */ + +#ifdef RT_USING_PINCTRL +rt_ssize_t rt_pin_ctrl_confs_lookup(struct rt_device *device, const char *name); +rt_err_t rt_pin_ctrl_confs_apply(struct rt_device *device, int index); +rt_err_t rt_pin_ctrl_confs_apply_by_name(struct rt_device *device, const char *name); +#endif /* RT_USING_PINCTRL */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/drivers/include/drivers/dev_pwm.h b/components/drivers/include/drivers/dev_pwm.h new file mode 100644 index 0000000000..98d6cef6d6 --- /dev/null +++ b/components/drivers/include/drivers/dev_pwm.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-05-07 aozima the first version + * 2022-09-24 yuqi add phase and dead time configuration + */ + +#ifndef __DEV_PWM_H__ +#define __DEV_PWM_H__ + +#include + +#define PWM_CMD_ENABLE (RT_DEVICE_CTRL_BASE(PWM) + 0) +#define PWM_CMD_DISABLE (RT_DEVICE_CTRL_BASE(PWM) + 1) +#define PWM_CMD_SET (RT_DEVICE_CTRL_BASE(PWM) + 2) +#define PWM_CMD_GET (RT_DEVICE_CTRL_BASE(PWM) + 3) +#define PWMN_CMD_ENABLE (RT_DEVICE_CTRL_BASE(PWM) + 4) +#define PWMN_CMD_DISABLE (RT_DEVICE_CTRL_BASE(PWM) + 5) +#define PWM_CMD_SET_PERIOD (RT_DEVICE_CTRL_BASE(PWM) + 6) +#define PWM_CMD_SET_PULSE (RT_DEVICE_CTRL_BASE(PWM) + 7) +#define PWM_CMD_SET_DEAD_TIME (RT_DEVICE_CTRL_BASE(PWM) + 8) +#define PWM_CMD_SET_PHASE (RT_DEVICE_CTRL_BASE(PWM) + 9) +#define PWM_CMD_ENABLE_IRQ (RT_DEVICE_CTRL_BASE(PWM) + 10) +#define PWM_CMD_DISABLE_IRQ (RT_DEVICE_CTRL_BASE(PWM) + 11) + +struct rt_pwm_configuration +{ + rt_uint32_t channel; /* 0 ~ n or 0 ~ -n, which depends on specific MCU requirements */ + rt_uint32_t period; /* unit:ns 1ns~4.29s:1Ghz~0.23hz */ + rt_uint32_t pulse; /* unit:ns (pulse<=period) */ + rt_uint32_t dead_time; /* unit:ns */ + rt_uint32_t phase; /*unit: degree, 0~360, which is the phase of pwm output, */ + /* + * RT_TRUE : The channel of pwm is complememtary. + * RT_FALSE : The channel of pwm is nomal. + */ + rt_bool_t complementary; +}; + +struct rt_device_pwm; +struct rt_pwm_ops +{ + rt_err_t (*control)(struct rt_device_pwm *device, int cmd, void *arg); +}; + +struct rt_device_pwm +{ + struct rt_device parent; + const struct rt_pwm_ops *ops; +}; + +rt_err_t rt_device_pwm_register(struct rt_device_pwm *device, const char *name, const struct rt_pwm_ops *ops, const void *user_data); + +rt_err_t rt_pwm_enable(struct rt_device_pwm *device, int channel); +rt_err_t rt_pwm_disable(struct rt_device_pwm *device, int channel); +rt_err_t rt_pwm_set(struct rt_device_pwm *device, int channel, rt_uint32_t period, rt_uint32_t pulse); +rt_err_t rt_pwm_set_period(struct rt_device_pwm *device, int channel, rt_uint32_t period); +rt_err_t rt_pwm_set_pulse(struct rt_device_pwm *device, int channel, rt_uint32_t pulse); +rt_err_t rt_pwm_set_dead_time(struct rt_device_pwm *device, int channel, rt_uint32_t dead_time); +rt_err_t rt_pwm_set_phase(struct rt_device_pwm *device, int channel, rt_uint32_t phase); + +#endif /* __DEV_PWM_H__ */ diff --git a/components/drivers/include/drivers/dev_rtc.h b/components/drivers/include/drivers/dev_rtc.h new file mode 100644 index 0000000000..96658968e5 --- /dev/null +++ b/components/drivers/include/drivers/dev_rtc.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2012-10-10 aozima first version. + * 2021-06-11 iysheng implement RTC framework V2.0 + * 2021-07-30 Meco Man move rtc_core.h to rtc.h + * 2022-04-05 tyx add timestamp function + */ + +#ifndef __DEV_RTC_H__ +#define __DEV_RTC_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define RT_DEVICE_CTRL_RTC_GET_TIME (RT_DEVICE_CTRL_BASE(RTC) + 0x01) /**< get second time */ +#define RT_DEVICE_CTRL_RTC_SET_TIME (RT_DEVICE_CTRL_BASE(RTC) + 0x02) /**< set second time */ +#define RT_DEVICE_CTRL_RTC_GET_TIMEVAL (RT_DEVICE_CTRL_BASE(RTC) + 0x03) /**< get timeval for gettimeofday */ +#define RT_DEVICE_CTRL_RTC_SET_TIMEVAL (RT_DEVICE_CTRL_BASE(RTC) + 0x04) /**< set timeval for gettimeofday */ +#define RT_DEVICE_CTRL_RTC_GET_ALARM (RT_DEVICE_CTRL_BASE(RTC) + 0x05) /**< get alarm */ +#define RT_DEVICE_CTRL_RTC_SET_ALARM (RT_DEVICE_CTRL_BASE(RTC) + 0x06) /**< set alarm */ +#define RT_DEVICE_CTRL_RTC_GET_TIMESPEC (RT_DEVICE_CTRL_BASE(RTC) + 0x07) /**< get timespec for clock_gettime */ +#define RT_DEVICE_CTRL_RTC_SET_TIMESPEC (RT_DEVICE_CTRL_BASE(RTC) + 0x08) /**< set timespec for clock_settime */ +#define RT_DEVICE_CTRL_RTC_GET_TIMERES (RT_DEVICE_CTRL_BASE(RTC) + 0x09) /**< get resolution for clock_getres */ + +/* used for alarm function */ +struct rt_rtc_wkalarm +{ + rt_bool_t enable; /* 0 = alarm disabled, 1 = alarm enabled */ + rt_int32_t tm_sec; /* alarm at tm_sec */ + rt_int32_t tm_min; /* alarm at tm_min */ + rt_int32_t tm_hour; /* alarm at tm_hour */ + rt_int32_t tm_mday; /* alarm at tm_mday */ + rt_int32_t tm_mon; /* alarm at tm_mon */ + rt_int32_t tm_year; /* alarm at tm_year */ +}; + +struct rt_rtc_ops +{ + rt_err_t (*init)(void); + rt_err_t (*get_secs)(time_t *sec); + rt_err_t (*set_secs)(time_t *sec); + rt_err_t (*get_alarm)(struct rt_rtc_wkalarm *alarm); + rt_err_t (*set_alarm)(struct rt_rtc_wkalarm *alarm); + rt_err_t (*get_timeval)(struct timeval *tv); + rt_err_t (*set_timeval)(struct timeval *tv); +}; + +typedef struct rt_rtc_device +{ + struct rt_device parent; + const struct rt_rtc_ops *ops; +} rt_rtc_dev_t; + +rt_err_t rt_hw_rtc_register(rt_rtc_dev_t *rtc, + const char *name, + rt_uint32_t flag, + void *data); + +rt_err_t set_date(rt_uint32_t year, rt_uint32_t month, rt_uint32_t day); +rt_err_t set_time(rt_uint32_t hour, rt_uint32_t minute, rt_uint32_t second); +rt_err_t set_timestamp(time_t timestamp); +rt_err_t get_timestamp(time_t *timestamp); + +#ifdef RT_USING_SYSTEM_WORKQUEUE +rt_err_t rt_soft_rtc_sync(void); +rt_err_t rt_soft_rtc_set_source(const char *name); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __DEV_RTC_H__ */ diff --git a/components/drivers/include/drivers/i2c-bit-ops.h b/components/drivers/include/drivers/i2c-bit-ops.h deleted file mode 100644 index 2b4ea57990..0000000000 --- a/components/drivers/include/drivers/i2c-bit-ops.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-04-25 weety first version - */ - -#ifndef __I2C_BIT_OPS_H__ -#define __I2C_BIT_OPS_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -struct rt_i2c_bit_ops -{ - void *data; /* private data for lowlevel routines */ - void (*set_sda)(void *data, rt_int32_t state); - void (*set_scl)(void *data, rt_int32_t state); - rt_int32_t (*get_sda)(void *data); - rt_int32_t (*get_scl)(void *data); - - void (*udelay)(rt_uint32_t us); - - rt_uint32_t delay_us; /* scl and sda line delay */ - rt_uint32_t timeout; /* in tick */ - - void (*pin_init)(void); - rt_bool_t i2c_pin_init_flag; -}; - -rt_err_t rt_i2c_bit_add_bus(struct rt_i2c_bus_device *bus, - const char *bus_name); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/drivers/include/drivers/i2c.h b/components/drivers/include/drivers/i2c.h deleted file mode 100644 index 0473a1e8dd..0000000000 --- a/components/drivers/include/drivers/i2c.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-04-25 weety first version - * 2021-04-20 RiceChen added support for bus control api - */ - -#ifndef __I2C_H__ -#define __I2C_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define RT_I2C_WR 0x0000 -#define RT_I2C_RD (1u << 0) -#define RT_I2C_ADDR_10BIT (1u << 2) /* this is a ten bit chip address */ -#define RT_I2C_NO_START (1u << 4) -#define RT_I2C_IGNORE_NACK (1u << 5) -#define RT_I2C_NO_READ_ACK (1u << 6) /* when I2C reading, we do not ACK */ -#define RT_I2C_NO_STOP (1u << 7) - -struct rt_i2c_msg -{ - rt_uint16_t addr; - rt_uint16_t flags; - rt_uint16_t len; - rt_uint8_t *buf; -}; - -struct rt_i2c_bus_device; - -struct rt_i2c_bus_device_ops -{ - rt_ssize_t (*master_xfer)(struct rt_i2c_bus_device *bus, - struct rt_i2c_msg msgs[], - rt_uint32_t num); - rt_ssize_t (*slave_xfer)(struct rt_i2c_bus_device *bus, - struct rt_i2c_msg msgs[], - rt_uint32_t num); - rt_err_t (*i2c_bus_control)(struct rt_i2c_bus_device *bus, - int cmd, - void *args); -}; - -/*for i2c bus driver*/ -struct rt_i2c_bus_device -{ - struct rt_device parent; - const struct rt_i2c_bus_device_ops *ops; - rt_uint16_t flags; - struct rt_mutex lock; - rt_uint32_t timeout; - rt_uint32_t retries; - void *priv; -}; - -struct rt_i2c_client -{ -#ifdef RT_USING_DM - struct rt_device parent; - - const char *name; - const struct rt_i2c_device_id *id; - const struct rt_ofw_node_id *ofw_id; -#endif - struct rt_i2c_bus_device *bus; - rt_uint16_t client_addr; -}; - -#ifdef RT_USING_DM -struct rt_i2c_device_id -{ - char name[20]; - void *data; -}; - -struct rt_i2c_driver -{ - struct rt_driver parent; - - const struct rt_i2c_device_id *ids; - const struct rt_ofw_node_id *ofw_ids; - - rt_err_t (*probe)(struct rt_i2c_client *client); - rt_err_t (*remove)(struct rt_i2c_client *client); - rt_err_t (*shutdown)(struct rt_i2c_client *client); -}; - -rt_err_t rt_i2c_driver_register(struct rt_i2c_driver *driver); -rt_err_t rt_i2c_device_register(struct rt_i2c_client *client); - -#define RT_I2C_DRIVER_EXPORT(driver) RT_DRIVER_EXPORT(driver, i2c, BUILIN) -#endif /* RT_USING_DM */ - -rt_err_t rt_i2c_bus_device_register(struct rt_i2c_bus_device *bus, - const char *bus_name); -struct rt_i2c_bus_device *rt_i2c_bus_device_find(const char *bus_name); -rt_ssize_t rt_i2c_transfer(struct rt_i2c_bus_device *bus, - struct rt_i2c_msg msgs[], - rt_uint32_t num); -rt_err_t rt_i2c_control(struct rt_i2c_bus_device *bus, - int cmd, - void *args); -rt_ssize_t rt_i2c_master_send(struct rt_i2c_bus_device *bus, - rt_uint16_t addr, - rt_uint16_t flags, - const rt_uint8_t *buf, - rt_uint32_t count); -rt_ssize_t rt_i2c_master_recv(struct rt_i2c_bus_device *bus, - rt_uint16_t addr, - rt_uint16_t flags, - rt_uint8_t *buf, - rt_uint32_t count); - -rt_inline rt_err_t rt_i2c_bus_lock(struct rt_i2c_bus_device *bus, rt_tick_t timeout) -{ - return rt_mutex_take(&bus->lock, timeout); -} - -rt_inline rt_err_t rt_i2c_bus_unlock(struct rt_i2c_bus_device *bus) -{ - return rt_mutex_release(&bus->lock); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/drivers/include/drivers/i2c_dev.h b/components/drivers/include/drivers/i2c_dev.h deleted file mode 100644 index 6744fa142d..0000000000 --- a/components/drivers/include/drivers/i2c_dev.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-04-25 weety first version - * 2021-04-20 RiceChen added bus clock command - */ - -#ifndef __I2C_DEV_H__ -#define __I2C_DEV_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define RT_I2C_DEV_CTRL_10BIT (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x01) -#define RT_I2C_DEV_CTRL_ADDR (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x02) -#define RT_I2C_DEV_CTRL_TIMEOUT (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x03) -#define RT_I2C_DEV_CTRL_RW (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x04) -#define RT_I2C_DEV_CTRL_CLK (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x05) -#define RT_I2C_DEV_CTRL_UNLOCK (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x06) -#define RT_I2C_DEV_CTRL_GET_STATE (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x07) -#define RT_I2C_DEV_CTRL_GET_MODE (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x08) -#define RT_I2C_DEV_CTRL_GET_ERROR (RT_DEVICE_CTRL_BASE(I2CBUS) + 0x09) - -struct rt_i2c_priv_data -{ - struct rt_i2c_msg *msgs; - rt_size_t number; -}; - -rt_err_t rt_i2c_bus_device_device_init(struct rt_i2c_bus_device *bus, - const char *name); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/drivers/include/drivers/i2c_dm.h b/components/drivers/include/drivers/i2c_dm.h deleted file mode 100644 index 4f5b251c60..0000000000 --- a/components/drivers/include/drivers/i2c_dm.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-11-26 GuEe-GUI first version - */ - -#ifndef __I2C_DM_H__ -#define __I2C_DM_H__ - -#include -#include -#include - -/* I2C Frequency Modes */ -#define I2C_MAX_STANDARD_MODE_FREQ 100000 -#define I2C_MAX_FAST_MODE_FREQ 400000 -#define I2C_MAX_FAST_MODE_PLUS_FREQ 1000000 -#define I2C_MAX_TURBO_MODE_FREQ 1400000 -#define I2C_MAX_HIGH_SPEED_MODE_FREQ 3400000 -#define I2C_MAX_ULTRA_FAST_MODE_FREQ 5000000 - -struct i2c_timings -{ - rt_uint32_t bus_freq_hz; /* the bus frequency in Hz */ - rt_uint32_t scl_rise_ns; /* time SCL signal takes to rise in ns; t(r) in the I2C specification */ - rt_uint32_t scl_fall_ns; /* time SCL signal takes to fall in ns; t(f) in the I2C specification */ - rt_uint32_t scl_int_delay_ns; /* time IP core additionally needs to setup SCL in ns */ - rt_uint32_t sda_fall_ns; /* time SDA signal takes to fall in ns; t(f) in the I2C specification */ - rt_uint32_t sda_hold_ns; /* time IP core additionally needs to hold SDA in ns */ - rt_uint32_t digital_filter_width_ns; /* width in ns of spikes on i2c lines that the IP core digital filter can filter out */ - rt_uint32_t analog_filter_cutoff_freq_hz; /* threshold frequency for the low pass IP core analog filter */ -}; - -#ifdef RT_USING_OFW -rt_err_t i2c_timings_ofw_parse(struct rt_ofw_node *dev_np, struct i2c_timings *timings, - rt_bool_t use_defaults); -#else -rt_inline rt_err_t i2c_timings_ofw_parse(struct rt_ofw_node *dev_np, struct i2c_timings *timings, - rt_bool_t use_defaults) -{ - return RT_EOK; -} -#endif /* RT_USING_OFW */ - -void i2c_bus_scan_clients(struct rt_i2c_bus_device *bus); - -#endif /* __I2C_DM_H__ */ diff --git a/components/drivers/include/drivers/pin.h b/components/drivers/include/drivers/pin.h deleted file mode 100644 index 22d4328e16..0000000000 --- a/components/drivers/include/drivers/pin.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2015-01-20 Bernard the first version - * 2017-10-20 ZYH add mode open drain and input pull down - */ - -#ifndef PIN_H__ -#define PIN_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef RT_USING_DM -#include - -struct rt_pin_irqchip -{ - struct rt_pic parent; - - int irq; - rt_base_t pin_range[2]; -}; -#endif /* RT_USING_DM */ - -/* pin device and operations for RT-Thread */ -struct rt_device_pin -{ - struct rt_device parent; -#ifdef RT_USING_DM - struct rt_pin_irqchip irqchip; -#endif /* RT_USING_DM */ - const struct rt_pin_ops *ops; -}; - -#define PIN_NONE (-1) - -#define PIN_LOW 0x00 -#define PIN_HIGH 0x01 - -#define PIN_MODE_OUTPUT 0x00 -#define PIN_MODE_INPUT 0x01 -#define PIN_MODE_INPUT_PULLUP 0x02 -#define PIN_MODE_INPUT_PULLDOWN 0x03 -#define PIN_MODE_OUTPUT_OD 0x04 - -#ifdef RT_USING_PINCTRL -enum -{ - PIN_CONFIG_BIAS_BUS_HOLD, - PIN_CONFIG_BIAS_DISABLE, - PIN_CONFIG_BIAS_HIGH_IMPEDANCE, - PIN_CONFIG_BIAS_PULL_DOWN, - PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, - PIN_CONFIG_BIAS_PULL_UP, - PIN_CONFIG_DRIVE_OPEN_DRAIN, - PIN_CONFIG_DRIVE_OPEN_SOURCE, - PIN_CONFIG_DRIVE_PUSH_PULL, - PIN_CONFIG_DRIVE_STRENGTH, - PIN_CONFIG_DRIVE_STRENGTH_UA, - PIN_CONFIG_INPUT_DEBOUNCE, - PIN_CONFIG_INPUT_ENABLE, - PIN_CONFIG_INPUT_SCHMITT, - PIN_CONFIG_INPUT_SCHMITT_ENABLE, - PIN_CONFIG_MODE_LOW_POWER, - PIN_CONFIG_MODE_PWM, - PIN_CONFIG_OUTPUT, - PIN_CONFIG_OUTPUT_ENABLE, - PIN_CONFIG_OUTPUT_IMPEDANCE_OHMS, - PIN_CONFIG_PERSIST_STATE, - PIN_CONFIG_POWER_SOURCE, - PIN_CONFIG_SKEW_DELAY, - PIN_CONFIG_SLEEP_HARDWARE_STATE, - PIN_CONFIG_SLEW_RATE, - PIN_CONFIG_END = 0x7f, - PIN_CONFIG_MAX = 0xff, -}; -#endif /* RT_USING_PINCTRL */ - -#define PIN_IRQ_MODE_RISING 0x00 -#define PIN_IRQ_MODE_FALLING 0x01 -#define PIN_IRQ_MODE_RISING_FALLING 0x02 -#define PIN_IRQ_MODE_HIGH_LEVEL 0x03 -#define PIN_IRQ_MODE_LOW_LEVEL 0x04 - -#define PIN_IRQ_DISABLE 0x00 -#define PIN_IRQ_ENABLE 0x01 - -#define PIN_IRQ_PIN_NONE PIN_NONE - -struct rt_device_pin_mode -{ - rt_base_t pin; - rt_uint8_t mode; /* e.g. PIN_MODE_OUTPUT */ -}; - -struct rt_device_pin_value -{ - rt_base_t pin; - rt_uint8_t value; /* PIN_LOW or PIN_HIGH */ -}; - -struct rt_pin_irq_hdr -{ - rt_base_t pin; - rt_uint8_t mode; /* e.g. PIN_IRQ_MODE_RISING */ - void (*hdr)(void *args); - void *args; -}; - -#ifdef RT_USING_PINCTRL -struct rt_pin_ctrl_conf_params -{ - const char *propname; - rt_uint32_t param; - rt_uint32_t default_value; -}; -#endif /* RT_USING_PINCTRL */ - -struct rt_pin_ops -{ - void (*pin_mode)(struct rt_device *device, rt_base_t pin, rt_uint8_t mode); - void (*pin_write)(struct rt_device *device, rt_base_t pin, rt_uint8_t value); - rt_ssize_t (*pin_read)(struct rt_device *device, rt_base_t pin); - rt_err_t (*pin_attach_irq)(struct rt_device *device, rt_base_t pin, - rt_uint8_t mode, void (*hdr)(void *args), void *args); - rt_err_t (*pin_detach_irq)(struct rt_device *device, rt_base_t pin); - rt_err_t (*pin_irq_enable)(struct rt_device *device, rt_base_t pin, rt_uint8_t enabled); - rt_base_t (*pin_get)(const char *name); -#ifdef RT_USING_DM - rt_err_t (*pin_irq_mode)(struct rt_device *device, rt_base_t pin, rt_uint8_t mode); - rt_ssize_t (*pin_parse)(struct rt_device *device, struct rt_ofw_cell_args *args, rt_uint32_t *flags); -#endif -#ifdef RT_USING_PINCTRL - rt_err_t (*pin_ctrl_confs_apply)(struct rt_device *device, void *fw_conf_np); -#endif /* RT_USING_PINCTRL */ -}; - -int rt_device_pin_register(const char *name, const struct rt_pin_ops *ops, void *user_data); -void rt_pin_mode(rt_base_t pin, rt_uint8_t mode); -void rt_pin_write(rt_base_t pin, rt_ssize_t value); -rt_ssize_t rt_pin_read(rt_base_t pin); -rt_base_t rt_pin_get(const char *name); -rt_err_t rt_pin_attach_irq(rt_base_t pin, rt_uint8_t mode, - void (*hdr)(void *args), void *args); -rt_err_t rt_pin_detach_irq(rt_base_t pin); -rt_err_t rt_pin_irq_enable(rt_base_t pin, rt_uint8_t enabled); - -#ifdef RT_USING_DM -rt_ssize_t rt_pin_get_named_pin(struct rt_device *dev, const char *propname, int index, - rt_uint8_t *out_mode, rt_uint8_t *out_value); -rt_ssize_t rt_pin_get_named_pin_count(struct rt_device *dev, const char *propname); - -#ifdef RT_USING_OFW -rt_ssize_t rt_ofw_get_named_pin(struct rt_ofw_node *np, const char *propname, int index, - rt_uint8_t *out_mode, rt_uint8_t *out_value); -rt_ssize_t rt_ofw_get_named_pin_count(struct rt_ofw_node *np, const char *propname); -#endif -#endif /* RT_USING_DM */ - -#ifdef RT_USING_PINCTRL -rt_ssize_t rt_pin_ctrl_confs_lookup(struct rt_device *device, const char *name); -rt_err_t rt_pin_ctrl_confs_apply(struct rt_device *device, int index); -rt_err_t rt_pin_ctrl_confs_apply_by_name(struct rt_device *device, const char *name); -#endif /* RT_USING_PINCTRL */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/drivers/include/drivers/rt_drv_pwm.h b/components/drivers/include/drivers/rt_drv_pwm.h deleted file mode 100644 index e9e1707144..0000000000 --- a/components/drivers/include/drivers/rt_drv_pwm.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-05-07 aozima the first version - * 2022-09-24 yuqi add phase and dead time configuration - */ - -#ifndef __DRV_PWM_H_INCLUDE__ -#define __DRV_PWM_H_INCLUDE__ - -#include - -#define PWM_CMD_ENABLE (RT_DEVICE_CTRL_BASE(PWM) + 0) -#define PWM_CMD_DISABLE (RT_DEVICE_CTRL_BASE(PWM) + 1) -#define PWM_CMD_SET (RT_DEVICE_CTRL_BASE(PWM) + 2) -#define PWM_CMD_GET (RT_DEVICE_CTRL_BASE(PWM) + 3) -#define PWMN_CMD_ENABLE (RT_DEVICE_CTRL_BASE(PWM) + 4) -#define PWMN_CMD_DISABLE (RT_DEVICE_CTRL_BASE(PWM) + 5) -#define PWM_CMD_SET_PERIOD (RT_DEVICE_CTRL_BASE(PWM) + 6) -#define PWM_CMD_SET_PULSE (RT_DEVICE_CTRL_BASE(PWM) + 7) -#define PWM_CMD_SET_DEAD_TIME (RT_DEVICE_CTRL_BASE(PWM) + 8) -#define PWM_CMD_SET_PHASE (RT_DEVICE_CTRL_BASE(PWM) + 9) -#define PWM_CMD_ENABLE_IRQ (RT_DEVICE_CTRL_BASE(PWM) + 10) -#define PWM_CMD_DISABLE_IRQ (RT_DEVICE_CTRL_BASE(PWM) + 11) - -struct rt_pwm_configuration -{ - rt_uint32_t channel; /* 0 ~ n or 0 ~ -n, which depends on specific MCU requirements */ - rt_uint32_t period; /* unit:ns 1ns~4.29s:1Ghz~0.23hz */ - rt_uint32_t pulse; /* unit:ns (pulse<=period) */ - rt_uint32_t dead_time; /* unit:ns */ - rt_uint32_t phase; /*unit: degree, 0~360, which is the phase of pwm output, */ - /* - * RT_TRUE : The channel of pwm is complememtary. - * RT_FALSE : The channel of pwm is nomal. - */ - rt_bool_t complementary; -}; - -struct rt_device_pwm; -struct rt_pwm_ops -{ - rt_err_t (*control)(struct rt_device_pwm *device, int cmd, void *arg); -}; - -struct rt_device_pwm -{ - struct rt_device parent; - const struct rt_pwm_ops *ops; -}; - -rt_err_t rt_device_pwm_register(struct rt_device_pwm *device, const char *name, const struct rt_pwm_ops *ops, const void *user_data); - -rt_err_t rt_pwm_enable(struct rt_device_pwm *device, int channel); -rt_err_t rt_pwm_disable(struct rt_device_pwm *device, int channel); -rt_err_t rt_pwm_set(struct rt_device_pwm *device, int channel, rt_uint32_t period, rt_uint32_t pulse); -rt_err_t rt_pwm_set_period(struct rt_device_pwm *device, int channel, rt_uint32_t period); -rt_err_t rt_pwm_set_pulse(struct rt_device_pwm *device, int channel, rt_uint32_t pulse); -rt_err_t rt_pwm_set_dead_time(struct rt_device_pwm *device, int channel, rt_uint32_t dead_time); -rt_err_t rt_pwm_set_phase(struct rt_device_pwm *device, int channel, rt_uint32_t phase); - -#endif /* __DRV_PWM_H_INCLUDE__ */ diff --git a/components/drivers/include/drivers/rtc.h b/components/drivers/include/drivers/rtc.h deleted file mode 100644 index cba0ff9149..0000000000 --- a/components/drivers/include/drivers/rtc.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-10-10 aozima first version. - * 2021-06-11 iysheng implement RTC framework V2.0 - * 2021-07-30 Meco Man move rtc_core.h to rtc.h - * 2022-04-05 tyx add timestamp function - */ - -#ifndef __RTC_H__ -#define __RTC_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define RT_DEVICE_CTRL_RTC_GET_TIME (RT_DEVICE_CTRL_BASE(RTC) + 0x01) /**< get second time */ -#define RT_DEVICE_CTRL_RTC_SET_TIME (RT_DEVICE_CTRL_BASE(RTC) + 0x02) /**< set second time */ -#define RT_DEVICE_CTRL_RTC_GET_TIMEVAL (RT_DEVICE_CTRL_BASE(RTC) + 0x03) /**< get timeval for gettimeofday */ -#define RT_DEVICE_CTRL_RTC_SET_TIMEVAL (RT_DEVICE_CTRL_BASE(RTC) + 0x04) /**< set timeval for gettimeofday */ -#define RT_DEVICE_CTRL_RTC_GET_ALARM (RT_DEVICE_CTRL_BASE(RTC) + 0x05) /**< get alarm */ -#define RT_DEVICE_CTRL_RTC_SET_ALARM (RT_DEVICE_CTRL_BASE(RTC) + 0x06) /**< set alarm */ -#define RT_DEVICE_CTRL_RTC_GET_TIMESPEC (RT_DEVICE_CTRL_BASE(RTC) + 0x07) /**< get timespec for clock_gettime */ -#define RT_DEVICE_CTRL_RTC_SET_TIMESPEC (RT_DEVICE_CTRL_BASE(RTC) + 0x08) /**< set timespec for clock_settime */ -#define RT_DEVICE_CTRL_RTC_GET_TIMERES (RT_DEVICE_CTRL_BASE(RTC) + 0x09) /**< get resolution for clock_getres */ - -/* used for alarm function */ -struct rt_rtc_wkalarm -{ - rt_bool_t enable; /* 0 = alarm disabled, 1 = alarm enabled */ - rt_int32_t tm_sec; /* alarm at tm_sec */ - rt_int32_t tm_min; /* alarm at tm_min */ - rt_int32_t tm_hour; /* alarm at tm_hour */ - rt_int32_t tm_mday; /* alarm at tm_mday */ - rt_int32_t tm_mon; /* alarm at tm_mon */ - rt_int32_t tm_year; /* alarm at tm_year */ -}; - -struct rt_rtc_ops -{ - rt_err_t (*init)(void); - rt_err_t (*get_secs)(time_t *sec); - rt_err_t (*set_secs)(time_t *sec); - rt_err_t (*get_alarm)(struct rt_rtc_wkalarm *alarm); - rt_err_t (*set_alarm)(struct rt_rtc_wkalarm *alarm); - rt_err_t (*get_timeval)(struct timeval *tv); - rt_err_t (*set_timeval)(struct timeval *tv); -}; - -typedef struct rt_rtc_device -{ - struct rt_device parent; - const struct rt_rtc_ops *ops; -} rt_rtc_dev_t; - -rt_err_t rt_hw_rtc_register(rt_rtc_dev_t *rtc, - const char *name, - rt_uint32_t flag, - void *data); - -rt_err_t set_date(rt_uint32_t year, rt_uint32_t month, rt_uint32_t day); -rt_err_t set_time(rt_uint32_t hour, rt_uint32_t minute, rt_uint32_t second); -rt_err_t set_timestamp(time_t timestamp); -rt_err_t get_timestamp(time_t *timestamp); - -#ifdef RT_USING_SYSTEM_WORKQUEUE -rt_err_t rt_soft_rtc_sync(void); -rt_err_t rt_soft_rtc_set_source(const char *name); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __RTC_H__ */ diff --git a/components/drivers/include/drivers/sensor.h b/components/drivers/include/drivers/sensor.h index 6c8b78e8a5..537266d705 100644 --- a/components/drivers/include/drivers/sensor.h +++ b/components/drivers/include/drivers/sensor.h @@ -12,7 +12,7 @@ #define __SENSOR_H__ #include -#include "pin.h" +#include "dev_pin.h" #ifdef __cplusplus extern "C" { diff --git a/components/drivers/include/drivers/sensor_v2.h b/components/drivers/include/drivers/sensor_v2.h index d90cef89c7..3cb00cac88 100644 --- a/components/drivers/include/drivers/sensor_v2.h +++ b/components/drivers/include/drivers/sensor_v2.h @@ -13,7 +13,7 @@ #define __SENSOR_H__ #include -#include "pin.h" +#include "dev_pin.h" #ifdef __cplusplus extern "C" { diff --git a/components/drivers/include/drivers/spi.h b/components/drivers/include/drivers/spi.h index b35c7b30b3..8c0bf0bbe9 100644 --- a/components/drivers/include/drivers/spi.h +++ b/components/drivers/include/drivers/spi.h @@ -15,7 +15,7 @@ #include #include -#include +#include #ifdef __cplusplus extern "C"{ diff --git a/components/drivers/include/drivers/touch.h b/components/drivers/include/drivers/touch.h index aa297491dc..edaf0ad230 100644 --- a/components/drivers/include/drivers/touch.h +++ b/components/drivers/include/drivers/touch.h @@ -12,7 +12,7 @@ #define __TOUCH_H__ #include -#include "pin.h" +#include "dev_pin.h" #ifdef __cplusplus extern "C" { diff --git a/components/drivers/include/rtdevice.h b/components/drivers/include/rtdevice.h index 5b080fced7..caff5284e5 100644 --- a/components/drivers/include/rtdevice.h +++ b/components/drivers/include/rtdevice.h @@ -59,9 +59,9 @@ extern "C" { #endif /* RT_USING_DM */ #ifdef RT_USING_RTC -#include "drivers/rtc.h" +#include "drivers/dev_rtc.h" #ifdef RT_USING_ALARM -#include "drivers/alarm.h" +#include "drivers/dev_alarm.h" #endif #endif /* RT_USING_RTC */ @@ -94,15 +94,14 @@ extern "C" { #endif /* RT_USING_SERIAL */ #ifdef RT_USING_I2C -#include "drivers/i2c.h" -#include "drivers/i2c_dev.h" +#include "drivers/dev_i2c.h" #ifdef RT_USING_I2C_BITOPS -#include "drivers/i2c-bit-ops.h" +#include "drivers/dev_i2c_bit_ops.h" #endif /* RT_USING_I2C_BITOPS */ #ifdef RT_USING_DM -#include "drivers/i2c_dm.h" +#include "drivers/dev_i2c_dm.h" #endif /* RT_USING_DM */ #endif /* RT_USING_I2C */ @@ -123,7 +122,7 @@ extern "C" { #endif /* RT_USING_WDT */ #ifdef RT_USING_PIN -#include "drivers/pin.h" +#include "drivers/dev_pin.h" #endif /* RT_USING_PIN */ #ifdef RT_USING_SENSOR @@ -135,7 +134,7 @@ extern "C" { #endif /* RT_USING_SENSOR */ #ifdef RT_USING_CAN -#include "drivers/can.h" +#include "drivers/dev_can.h" #endif /* RT_USING_CAN */ #ifdef RT_USING_HWTIMER @@ -143,7 +142,7 @@ extern "C" { #endif /* RT_USING_HWTIMER */ #ifdef RT_USING_AUDIO -#include "drivers/audio.h" +#include "drivers/dev_audio.h" #endif /* RT_USING_AUDIO */ #ifdef RT_USING_CPUTIME @@ -159,7 +158,7 @@ extern "C" { #endif /* RT_USING_DAC */ #ifdef RT_USING_PWM -#include "drivers/rt_drv_pwm.h" +#include "drivers/dev_pwm.h" #endif /* RT_USING_PWM */ #ifdef RT_USING_PM -- cgit v1.3.1