File tree 5 files changed +40
-0
lines changed
5 files changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -67,6 +67,7 @@ typedef enum {
67
67
MRAA_GPIOD_ACTIVE_LOW = 4 ,
68
68
MRAA_GPIOD_OPEN_DRAIN = 5 ,
69
69
MRAA_GPIOD_OPEN_SOURCE = 6 ,
70
+ MRAA_GPIO_DISABLE = 7 ,
70
71
} mraa_gpio_mode_t ;
71
72
72
73
/**
Original file line number Diff line number Diff line change @@ -46,6 +46,9 @@ mraa_boolean_t mraa_is_gpio_line_dir_out(mraa_gpiod_line_info *linfo);
46
46
mraa_boolean_t mraa_is_gpio_line_active_low (mraa_gpiod_line_info * linfo );
47
47
mraa_boolean_t mraa_is_gpio_line_open_drain (mraa_gpiod_line_info * linfo );
48
48
mraa_boolean_t mraa_is_gpio_line_open_source (mraa_gpiod_line_info * linfo );
49
+ mraa_boolean_t mraa_is_gpio_line_bias_pull_up (mraa_gpiod_line_info * linfo );
50
+ mraa_boolean_t mraa_is_gpio_line_bias_pull_down (mraa_gpiod_line_info * linfo );
51
+ mraa_boolean_t mraa_is_gpio_line_disable (mraa_gpiod_line_info * linfo );
49
52
50
53
int mraa_get_number_of_gpio_chips ();
51
54
int mraa_get_chip_infos (mraa_gpiod_chip_info * * * cinfos );
Original file line number Diff line number Diff line change @@ -21,6 +21,9 @@ struct gpiochip_info {
21
21
#define GPIOLINE_FLAG_ACTIVE_LOW (1UL << 2)
22
22
#define GPIOLINE_FLAG_OPEN_DRAIN (1UL << 3)
23
23
#define GPIOLINE_FLAG_OPEN_SOURCE (1UL << 4)
24
+ #define GPIOLINE_FLAG_BIAS_PULL_UP (1UL << 5)
25
+ #define GPIOLINE_FLAG_BIAS_PULL_DOWN (1UL << 6)
26
+ #define GPIOLINE_FLAG_BIAS_DISABLE (1UL << 7)
24
27
25
28
struct gpioline_info {
26
29
__u32 line_offset ;
@@ -36,6 +39,9 @@ struct gpioline_info {
36
39
#define GPIOHANDLE_REQUEST_ACTIVE_LOW (1UL << 2)
37
40
#define GPIOHANDLE_REQUEST_OPEN_DRAIN (1UL << 3)
38
41
#define GPIOHANDLE_REQUEST_OPEN_SOURCE (1UL << 4)
42
+ #define GPIOHANDLE_REQUEST_BIAS_PULL_UP (1UL << 5)
43
+ #define GPIOHANDLE_REQUEST_BIAS_PULL_DOWN (1UL << 6)
44
+ #define GPIOHANDLE_REQUEST_BIAS_DISABLE (1UL << 7)
39
45
40
46
struct gpiohandle_request {
41
47
__u32 lineoffsets [GPIOHANDLES_MAX ];
Original file line number Diff line number Diff line change @@ -1110,6 +1110,15 @@ mraa_gpio_mode(mraa_gpio_context dev, mraa_gpio_mode_t mode)
1110
1110
case MRAA_GPIOD_OPEN_SOURCE :
1111
1111
flags |= GPIOHANDLE_REQUEST_OPEN_SOURCE ;
1112
1112
break ;
1113
+ case MRAA_GPIO_PULLUP :
1114
+ flags |= GPIOHANDLE_REQUEST_BIAS_PULL_UP ;
1115
+ break ;
1116
+ case MRAA_GPIO_PULLDOWN :
1117
+ flags |= GPIOHANDLE_REQUEST_BIAS_PULL_DOWN ;
1118
+ break ;
1119
+ case MRAA_GPIO_DISABLE :
1120
+ flags |= GPIOHANDLE_REQUEST_BIAS_DISABLE ;
1121
+ break ;
1113
1122
default :
1114
1123
return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED ;
1115
1124
}
@@ -1153,6 +1162,9 @@ mraa_gpio_mode(mraa_gpio_context dev, mraa_gpio_mode_t mode)
1153
1162
case MRAA_GPIO_PULLDOWN :
1154
1163
length = snprintf (bu , sizeof (bu ), "pulldown" );
1155
1164
break ;
1165
+ case MRAA_GPIO_DISABLE :
1166
+ length = snprintf (bu , sizeof (bu ), "disable" );
1167
+ break ;
1156
1168
case MRAA_GPIO_HIZ :
1157
1169
length = snprintf (bu , sizeof (bu ), "hiz" );
1158
1170
break ;
Original file line number Diff line number Diff line change @@ -429,6 +429,24 @@ mraa_is_gpio_line_open_source(mraa_gpiod_line_info* linfo)
429
429
return (linfo -> flags & GPIOLINE_FLAG_OPEN_SOURCE );
430
430
}
431
431
432
+ mraa_boolean_t
433
+ mraa_is_gpio_line_bias_pull_up (mraa_gpiod_line_info * linfo )
434
+ {
435
+ return (linfo -> flags & GPIOLINE_FLAG_BIAS_PULL_UP );
436
+ }
437
+
438
+ mraa_boolean_t
439
+ mraa_is_gpio_line_bias_pull_down (mraa_gpiod_line_info * linfo )
440
+ {
441
+ return (linfo -> flags & GPIOLINE_FLAG_BIAS_PULL_DOWN );
442
+ }
443
+
444
+ mraa_boolean_t
445
+ mraa_is_gpio_line_disable (mraa_gpiod_line_info * linfo )
446
+ {
447
+ return (linfo -> flags & GPIOLINE_FLAG_BIAS_DISABLE );
448
+ }
449
+
432
450
static int
433
451
dir_filter (const struct dirent * dir )
434
452
{
You can’t perform that action at this time.
0 commit comments