mirror of
https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git
synced 2026-10-24 00:48:53 +03:00
tests: gpiosim: provide gpiosim_bank_set_line_valid()
Provide a function allowing to mark a GPIO at given offset as valid or invalid (all lines are valid by default). This will make it impossible for any user to request it once the simulator is up. Link: https://lore.kernel.org/r/20251006-gpiosim-valid-lines-v1-5-b399373e90a9@linaro.org Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
@@ -130,6 +130,11 @@ int main(int argc UNUSED, char **argv UNUSED)
|
||||
ret = gpiosim_bank_clear_hog(bank1, 3);
|
||||
expect_or_die(ret == 0, "Error while clearing the hog");
|
||||
|
||||
printf("Mark one line as invalid\n");
|
||||
|
||||
ret = gpiosim_bank_set_line_valid(bank0, 1, false);
|
||||
expect_or_die(ret == 0, "Unable to mark line as invalid");
|
||||
|
||||
printf("Re-enabling the GPIO device\n");
|
||||
|
||||
ret = gpiosim_dev_enable(dev);
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
#define GPIOSIM_API __attribute__((visibility("default")))
|
||||
#define UNUSED __attribute__((unused))
|
||||
#define MIN_KERNEL_VERSION KERNEL_VERSION(5, 17, 4)
|
||||
#define MIN_KERNEL_VERSION KERNEL_VERSION(6, 17, 0)
|
||||
|
||||
static pthread_mutex_t id_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||
static pthread_once_t id_init_once = PTHREAD_ONCE_INIT;
|
||||
@@ -1125,6 +1125,24 @@ GPIOSIM_API int gpiosim_bank_clear_hog(struct gpiosim_bank *bank,
|
||||
return unlinkat(bank->cfs_dir_fd, buf, AT_REMOVEDIR);
|
||||
}
|
||||
|
||||
GPIOSIM_API int gpiosim_bank_set_line_valid(struct gpiosim_bank *bank,
|
||||
unsigned int offset, bool valid)
|
||||
{
|
||||
char buf[32];
|
||||
int ret;
|
||||
|
||||
if (!dev_check_pending(bank->dev))
|
||||
return -1;
|
||||
|
||||
ret = bank_make_line_dir(bank, offset);
|
||||
if (ret)
|
||||
return -1;
|
||||
|
||||
snprintf(buf, sizeof(buf), "line%u/valid", offset);
|
||||
|
||||
return open_write_close(bank->cfs_dir_fd, buf, valid ? "1" : "0");
|
||||
}
|
||||
|
||||
static int sysfs_read_bank_attr(struct gpiosim_bank *bank, unsigned int offset,
|
||||
const char *attr, char *buf, size_t bufsize)
|
||||
{
|
||||
|
||||
@@ -61,6 +61,8 @@ int gpiosim_bank_set_line_name(struct gpiosim_bank *bank,
|
||||
int gpiosim_bank_hog_line(struct gpiosim_bank *bank, unsigned int offset,
|
||||
const char *name, enum gpiosim_direction direction);
|
||||
int gpiosim_bank_clear_hog(struct gpiosim_bank *bank, unsigned int offset);
|
||||
int gpiosim_bank_set_line_valid(struct gpiosim_bank *bank, unsigned int offset,
|
||||
bool valid);
|
||||
|
||||
enum gpiosim_value
|
||||
gpiosim_bank_get_value(struct gpiosim_bank *bank, unsigned int offset);
|
||||
|
||||
Reference in New Issue
Block a user