VSF Documented
vsf_hal_distbus_gpio.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_HAL_DISTBUS_GPIO_H__
19#define __VSF_HAL_DISTBUS_GPIO_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "hal/vsf_hal_cfg.h"
24
25#if VSF_HAL_USE_GPIO == ENABLED && VSF_HAL_DISTBUS_USE_GPIO == ENABLED
26
27#if defined(__VSF_HAL_DISTBUS_GPIO_CLASS_IMPLEMENT)
28# define __VSF_CLASS_IMPLEMENT__
29#elif defined(__VSF_HAL_DISTBUS_GPIO_CLASS_INHERIT__)
30# define __VSF_CLASS_INHERIT__
31#endif
32
33#include "utilities/ooc_class.h"
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/*============================ MACROS ========================================*/
40
41#ifndef VSF_HAL_DISTBUS_GPIO_CFG_MULTI_CLASS
42# define VSF_HAL_DISTBUS_GPIO_CFG_MULTI_CLASS VSF_GPIO_CFG_MULTI_CLASS
43#endif
44
45/*============================ MACROFIED FUNCTIONS ===========================*/
46/*============================ TYPES =========================================*/
47
48#if defined(__VSF_HAL_DISTBUS_GPIO_CLASS_IMPLEMENT) || defined(__VSF_HAL_DISTBUS_GPIO_CLASS_INHERIT__)
49enum {
50 // commands to slave
51 VSF_HAL_DISTBUS_GPIO_CMD_CONFIG_PIN = 0,
52 VSF_HAL_DISTBUS_GPIO_CMD_SET_DIRECTION,
53 VSF_HAL_DISTBUS_GPIO_CMD_WRITE,
54 VSF_HAL_DISTBUS_GPIO_CMD_SET,
55 VSF_HAL_DISTBUS_GPIO_CMD_CLEAR,
56 VSF_HAL_DISTBUS_GPIO_CMD_TOGGLE,
57 VSF_HAL_DISTBUS_GPIO_CMD_OUTPUT_AND_SET,
58 VSF_HAL_DISTBUS_GPIO_CMD_OUTPUT_AND_CLEAR,
59
60 // commands to host
61 VSF_HAL_DISTBUS_GPIO_CMD_SYNC,
62
63 VSF_HAL_DISTBUS_GPIO_CMD_ADDR_RANGE,
64};
65
66typedef enum vsf_hal_distbus_gpio_mode_t {
67 // TODO: add more mode
68 VSF_HAL_DISTBUS_GPIO_MODE_DUMMY,
69} vsf_hal_distbus_gpio_mode_t;
70typedef struct vsf_hal_distbus_gpio_port_config_pins_t {
71 vsf_gpio_pin_mask_t pin_mask;
72 vsf_gpio_mode_t mode;
73 uint16_t alternate_function;
74} VSF_CAL_PACKED vsf_hal_distbus_gpio_port_config_pins_t;
75
76typedef struct vsf_hal_distbus_gpio_set_direction_t {
77 vsf_gpio_pin_mask_t pin_mask;
78 vsf_gpio_pin_mask_t direction_mask;
79} VSF_CAL_PACKED vsf_hal_distbus_gpio_set_direction_t;
80
81typedef struct vsf_hal_distbus_gpio_write_t {
82 vsf_gpio_pin_mask_t pin_mask;
84} VSF_CAL_PACKED vsf_hal_distbus_gpio_write_t;
85
86typedef struct vsf_hal_distbus_gpio_pin_mask_t {
87 vsf_gpio_pin_mask_t pin_mask;
88} VSF_CAL_PACKED vsf_hal_distbus_gpio_pin_mask_t;
89
90typedef struct vsf_hal_distbus_gpio_sync_t {
92} VSF_CAL_PACKED vsf_hal_distbus_gpio_sync_t;
93#endif
94
101
105
107#if VSF_HAL_DISTBUS_GPIO_CFG_MULTI_CLASS == ENABLED
108 public_member(
109 implement(vsf_gpio_t)
110 )
111#endif
112 protected_member(
113 vsf_distbus_service_t service;
115 private_member(
116 vsf_distbus_t *distbus;
118 )
119};
120
121/*============================ GLOBAL VARIABLES ==============================*/
122/*============================ INCLUDES ======================================*/
123/*============================ PROTOTYPES ====================================*/
124
126
127#if defined(__VSF_HAL_DISTBUS_GPIO_CLASS_IMPLEMENT) || defined(__VSF_HAL_DISTBUS_GPIO_CLASS_INHERIT__)
130#endif
131
132/*============================ INCLUDES ======================================*/
133
134#define VSF_GPIO_CFG_DEC_PREFIX vsf_hal_distbus
135#define VSF_GPIO_CFG_DEC_UPCASE_PREFIX VSF_HAL_DISTBUS
137
138#ifdef __cplusplus
139}
140#endif
141
142#undef __VSF_HAL_DISTBUS_GPIO_CLASS_IMPLEMENT
143#undef __VSF_HAL_DISTBUS_GPIO_CLASS_INHERIT__
144
145#endif
146#endif
147/* EOF */
148
vsf_gpio_mode_t
Definition gpio.h:31
Definition vsf_distbus.h:86
Definition vsf_distbus.h:119
Definition vsf_hal_distbus_gpio.h:106
#define vsf_class(__name)
Definition ooc_class.h:48
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_gpio.h:471
Definition vsf_hal_distbus_gpio.h:95
vsf_gpio_pin_mask_t direction
Definition vsf_hal_distbus_gpio.h:102
uint8_t support_config_pin
Definition vsf_hal_distbus_gpio.h:96
vsf_gpio_pin_mask_t pin_mask
Definition vsf_hal_distbus_gpio.h:100
uint8_t support_output_and_set
Definition vsf_hal_distbus_gpio.h:97
uint8_t support_output_and_clear
Definition vsf_hal_distbus_gpio.h:98
vsf_gpio_pin_mask_t value
Definition vsf_hal_distbus_gpio.h:103
uint8_t pin_count
Definition vsf_hal_distbus_gpio.h:99
vk_av_control_value_t value
Definition vsf_audio.h:171
uint32_t vsf_generic_io_feature_to_hal_distbus_io_feature(vsf_gpio_mode_t generic_io_feature)
Definition vsf_hal_distbus_gpio.c:69
vsf_gpio_mode_t vsf_hal_distbus_io_feature_to_generic_io_feature(uint32_t hal_distbus_io_feature)
Definition vsf_hal_distbus_gpio.c:65
uint32_t vsf_hal_distbus_gpio_register_service(vsf_distbus_t *distbus, vsf_hal_distbus_gpio_t *gpio, void *info, uint32_t infolen)
Definition vsf_hal_distbus_gpio.c:98
struct vk_romfs_header_t VSF_CAL_PACKED
#define vsf_gpio_pin_mask_t
Definition vsf_template_gpio.h:187