Symbol: kgpio
usr/src/uts/common/io/gpio/kgpio.c
1006
if ((kgpio->kgpio_flags & KGPIO_F_META_WORK) != 0) {
usr/src/uts/common/io/gpio/kgpio.c
1008
while ((kgpio->kgpio_flags & KGPIO_F_META_WORK) != 0) {
usr/src/uts/common/io/gpio/kgpio.c
1009
int cv = cv_wait_sig(&kgpio->kgpio_cv,
usr/src/uts/common/io/gpio/kgpio.c
1010
&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1012
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1022
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1032
kgpio->kgpio_flags |= KGPIO_F_META_WORK;
usr/src/uts/common/io/gpio/kgpio.c
1033
pdip = ddi_get_parent(kgpio->kgpio_dip);
usr/src/uts/common/io/gpio/kgpio.c
1034
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1041
e_ddi_hold_devi(kgpio->kgpio_dip);
usr/src/uts/common/io/gpio/kgpio.c
1048
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1049
kgpio->kgpio_flags |= KGPIO_F_HELD;
usr/src/uts/common/io/gpio/kgpio.c
1050
if ((kgpio->kgpio_flags & KGPIO_F_REMOVED) != 0) {
usr/src/uts/common/io/gpio/kgpio.c
1051
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1052
kgpio_release(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
1053
kgpio_release_meta(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
1062
if ((kgpio->kgpio_flags & KGPIO_F_VALID) == 0) {
usr/src/uts/common/io/gpio/kgpio.c
1063
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1065
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1071
ASSERT(kgpio->kgpio_flags & KGPIO_F_META_WORK);
usr/src/uts/common/io/gpio/kgpio.c
1072
if ((kgpio->kgpio_flags & KGPIO_F_REMOVED) != 0 ||
usr/src/uts/common/io/gpio/kgpio.c
1073
(kgpio->kgpio_flags & KGPIO_F_VALID) == 0) {
usr/src/uts/common/io/gpio/kgpio.c
1074
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1075
kgpio_release(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
1076
kgpio_release_meta(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
1086
ASSERT(kgpio->kgpio_flags & KGPIO_F_META_WORK);
usr/src/uts/common/io/gpio/kgpio.c
1087
ASSERT(kgpio->kgpio_flags & KGPIO_F_HELD);
usr/src/uts/common/io/gpio/kgpio.c
1088
ASSERT(kgpio->kgpio_flags & KGPIO_F_VALID);
usr/src/uts/common/io/gpio/kgpio.c
1089
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1091
kgpio_release_meta(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
1215
kgpio_ioctl_ctrl_info(kgpio_t *kgpio, intptr_t arg, int mode)
usr/src/uts/common/io/gpio/kgpio.c
1219
ASSERT(MUTEX_HELD(&kgpio->kgpio_mutex));
usr/src/uts/common/io/gpio/kgpio.c
1227
info.kci_ngpios = kgpio->kgpio_ngpios;
usr/src/uts/common/io/gpio/kgpio.c
1228
info.kci_ndpios = kgpio->kgpio_ndpios;
usr/src/uts/common/io/gpio/kgpio.c
1229
(void) ddi_pathname(kgpio->kgpio_dip, info.kci_devpath);
usr/src/uts/common/io/gpio/kgpio.c
1240
kgpio_ioctl_gpio_info(kgpio_t *kgpio, intptr_t arg, int mode)
usr/src/uts/common/io/gpio/kgpio.c
1251
ASSERT(MUTEX_HELD(&kgpio->kgpio_mutex));
usr/src/uts/common/io/gpio/kgpio.c
1282
if (info.kgi_id >= kgpio->kgpio_ngpios) {
usr/src/uts/common/io/gpio/kgpio.c
1287
ret = kgpio->kgpio_ops->kgo_get(kgpio->kgpio_drv, info.kgi_id, attr);
usr/src/uts/common/io/gpio/kgpio.c
1340
kgpio_ioctl_gpio_update(kgpio_t *kgpio, intptr_t arg, int mode)
usr/src/uts/common/io/gpio/kgpio.c
1351
ASSERT(MUTEX_HELD(&kgpio->kgpio_mutex));
usr/src/uts/common/io/gpio/kgpio.c
1390
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1392
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1396
if (dpio->dpio_kgpio == kgpio &&
usr/src/uts/common/io/gpio/kgpio.c
1408
if (kgu.kgu_id >= kgpio->kgpio_ngpios) {
usr/src/uts/common/io/gpio/kgpio.c
1429
ret = kgpio->kgpio_ops->kgo_set(kgpio->kgpio_drv, kgu.kgu_id, attr_nvl,
usr/src/uts/common/io/gpio/kgpio.c
1543
kgpio_ioctl_dpio_create(kgpio_t *kgpio, intptr_t arg, int mode)
usr/src/uts/common/io/gpio/kgpio.c
1553
ASSERT(MUTEX_HELD(&kgpio->kgpio_mutex));
usr/src/uts/common/io/gpio/kgpio.c
1564
if (create.kdc_id >= kgpio->kgpio_ngpios) {
usr/src/uts/common/io/gpio/kgpio.c
1584
if (kgpio->kgpio_ops->kgo_cap == NULL) {
usr/src/uts/common/io/gpio/kgpio.c
1587
ret = kgpio->kgpio_ops->kgo_cap(kgpio->kgpio_drv, create.kdc_id,
usr/src/uts/common/io/gpio/kgpio.c
1594
if (kgpio->kgpio_ops->kgo_input == NULL ||
usr/src/uts/common/io/gpio/kgpio.c
1602
if (kgpio->kgpio_ops->kgo_output_state == NULL ||
usr/src/uts/common/io/gpio/kgpio.c
1603
kgpio->kgpio_ops->kgo_output == NULL ||
usr/src/uts/common/io/gpio/kgpio.c
1630
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1632
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1636
if (dpio->dpio_kgpio == kgpio &&
usr/src/uts/common/io/gpio/kgpio.c
1654
dpio->dpio_kgpio = kgpio;
usr/src/uts/common/io/gpio/kgpio.c
1687
kgpio->kgpio_ndpios++;
usr/src/uts/common/io/gpio/kgpio.c
1695
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1696
e_ddi_hold_devi(kgpio->kgpio_dip);
usr/src/uts/common/io/gpio/kgpio.c
1697
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1703
kgpio_ioctl_dpio_destroy(kgpio_t *kgpio, intptr_t arg, int mode)
usr/src/uts/common/io/gpio/kgpio.c
1708
ASSERT(MUTEX_HELD(&kgpio->kgpio_mutex));
usr/src/uts/common/io/gpio/kgpio.c
1719
if (destroy.kdd_id >= kgpio->kgpio_ngpios) {
usr/src/uts/common/io/gpio/kgpio.c
1723
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1727
if (dpio->dpio_kgpio == kgpio &&
usr/src/uts/common/io/gpio/kgpio.c
1734
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1740
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1766
ddi_release_devi(kgpio->kgpio_dip);
usr/src/uts/common/io/gpio/kgpio.c
1768
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1769
VERIFY3P(kgpio->kgpio_ndpios, >, 0);
usr/src/uts/common/io/gpio/kgpio.c
1770
kgpio->kgpio_ndpios--;
usr/src/uts/common/io/gpio/kgpio.c
1837
kgpio_t *kgpio = dpio->dpio_kgpio;
usr/src/uts/common/io/gpio/kgpio.c
1851
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1852
ret = kgpio->kgpio_ops->kgo_output_state(kgpio->kgpio_drv,
usr/src/uts/common/io/gpio/kgpio.c
1854
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1900
kgpio_ioctl_gpio_name2id(kgpio_t *kgpio, intptr_t arg, int mode)
usr/src/uts/common/io/gpio/kgpio.c
1906
ASSERT(MUTEX_HELD(&kgpio->kgpio_mutex));
usr/src/uts/common/io/gpio/kgpio.c
1921
ret = kgpio->kgpio_ops->kgo_name2id(kgpio->kgpio_drv, id.kin_name,
usr/src/uts/common/io/gpio/kgpio.c
1940
kgpio_t *kgpio;
usr/src/uts/common/io/gpio/kgpio.c
1948
kgpio = minor->kminor_data.kminor_ctrl;
usr/src/uts/common/io/gpio/kgpio.c
1949
VERIFY3P(kgpio, !=, NULL);
usr/src/uts/common/io/gpio/kgpio.c
1951
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
1953
ASSERT(kgpio->kgpio_flags & KGPIO_F_VALID);
usr/src/uts/common/io/gpio/kgpio.c
1954
ASSERT(kgpio->kgpio_flags & KGPIO_F_HELD);
usr/src/uts/common/io/gpio/kgpio.c
1958
ret = kgpio_ioctl_ctrl_info(kgpio, arg, mode);
usr/src/uts/common/io/gpio/kgpio.c
1961
ret = kgpio_ioctl_gpio_info(kgpio, arg, mode);
usr/src/uts/common/io/gpio/kgpio.c
1964
ret = kgpio_ioctl_gpio_update(kgpio, arg, mode);
usr/src/uts/common/io/gpio/kgpio.c
1967
ret = kgpio_ioctl_dpio_create(kgpio, arg, mode);
usr/src/uts/common/io/gpio/kgpio.c
1970
ret = kgpio_ioctl_dpio_destroy(kgpio, arg, mode);
usr/src/uts/common/io/gpio/kgpio.c
1973
ret = kgpio_ioctl_gpio_name2id(kgpio, arg, mode);
usr/src/uts/common/io/gpio/kgpio.c
1980
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
2028
kgpio_t *kgpio;
usr/src/uts/common/io/gpio/kgpio.c
2057
kgpio = dpio->dpio_kgpio;
usr/src/uts/common/io/gpio/kgpio.c
2058
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
2059
ret = kgpio->kgpio_ops->kgo_input(kgpio->kgpio_drv, dpio->dpio_gpio_num,
usr/src/uts/common/io/gpio/kgpio.c
2061
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
2079
kgpio_t *kgpio;
usr/src/uts/common/io/gpio/kgpio.c
2120
kgpio = dpio->dpio_kgpio;
usr/src/uts/common/io/gpio/kgpio.c
2121
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
2122
ret = kgpio->kgpio_ops->kgo_output(kgpio->kgpio_drv,
usr/src/uts/common/io/gpio/kgpio.c
2124
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
2139
kgpio_t *kgpio;
usr/src/uts/common/io/gpio/kgpio.c
2151
kgpio = minor->kminor_data.kminor_ctrl;
usr/src/uts/common/io/gpio/kgpio.c
2152
VERIFY3P(kgpio, !=, NULL);
usr/src/uts/common/io/gpio/kgpio.c
2154
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
2155
ASSERT(kgpio->kgpio_flags & KGPIO_F_VALID);
usr/src/uts/common/io/gpio/kgpio.c
2156
ASSERT(kgpio->kgpio_flags & KGPIO_F_HELD);
usr/src/uts/common/io/gpio/kgpio.c
2165
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
2167
kgpio_release(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
547
struct kgpio;
usr/src/uts/common/io/gpio/kgpio.c
572
struct kgpio *kminor_ctrl;
usr/src/uts/common/io/gpio/kgpio.c
708
kgpio_cleanup(kgpio_t *kgpio)
usr/src/uts/common/io/gpio/kgpio.c
710
if (kgpio->kgpio_minor.kminor_id > 0) {
usr/src/uts/common/io/gpio/kgpio.c
711
id_free(kgpio_g_ids, kgpio->kgpio_minor.kminor_id);
usr/src/uts/common/io/gpio/kgpio.c
712
kgpio->kgpio_minor.kminor_id = 0;
usr/src/uts/common/io/gpio/kgpio.c
714
cv_destroy(&kgpio->kgpio_cv);
usr/src/uts/common/io/gpio/kgpio.c
715
mutex_destroy(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
716
kmem_free(kgpio, sizeof (kgpio_t));
usr/src/uts/common/io/gpio/kgpio.c
722
kgpio_t *kgpio = arg;
usr/src/uts/common/io/gpio/kgpio.c
725
if ((kgpio->kgpio_flags & KGPIO_F_MINOR_VALID) != 0) {
usr/src/uts/common/io/gpio/kgpio.c
726
kgpio->kgpio_flags &= ~KGPIO_F_MINOR_VALID;
usr/src/uts/common/io/gpio/kgpio.c
727
(void) ddi_remove_minor_node(kgpio_g_dip, kgpio->kgpio_mname);
usr/src/uts/common/io/gpio/kgpio.c
731
kgpio_cleanup(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
737
kgpio_t *kgpio = arg;
usr/src/uts/common/io/gpio/kgpio.c
750
list_remove(&kgpio_g_gpios, kgpio);
usr/src/uts/common/io/gpio/kgpio.c
751
avl_remove(&kgpio_g_minors, &kgpio->kgpio_minor);
usr/src/uts/common/io/gpio/kgpio.c
752
kgpio->kgpio_flags |= KGPIO_F_REMOVED;
usr/src/uts/common/io/gpio/kgpio.c
755
(void) taskq_dispatch(system_taskq, kgpio_unbind_taskq, kgpio,
usr/src/uts/common/io/gpio/kgpio.c
762
kgpio_t *kgpio;
usr/src/uts/common/io/gpio/kgpio.c
773
kgpio = kgpio_find_by_dip(dip);
usr/src/uts/common/io/gpio/kgpio.c
774
if (kgpio == NULL) {
usr/src/uts/common/io/gpio/kgpio.c
778
kgpio->kgpio_flags &= ~KGPIO_F_VALID;
usr/src/uts/common/io/gpio/kgpio.c
790
kgpio_create_minor(kgpio_t *kgpio)
usr/src/uts/common/io/gpio/kgpio.c
792
ASSERT(MUTEX_HELD(&kgpio->kgpio_mutex));
usr/src/uts/common/io/gpio/kgpio.c
794
if (ddi_create_minor_node(kgpio_g_dip, kgpio->kgpio_mname, S_IFCHR,
usr/src/uts/common/io/gpio/kgpio.c
795
(minor_t)kgpio->kgpio_minor.kminor_id, DDI_NT_GPIO_CTRL, 0) != 0) {
usr/src/uts/common/io/gpio/kgpio.c
797
"%s", kgpio->kgpio_mname);
usr/src/uts/common/io/gpio/kgpio.c
799
kgpio->kgpio_flags |= KGPIO_F_MINOR_VALID;
usr/src/uts/common/io/gpio/kgpio.c
807
kgpio_t *kgpio;
usr/src/uts/common/io/gpio/kgpio.c
819
kgpio = kgpio_find_by_dip(dip);
usr/src/uts/common/io/gpio/kgpio.c
820
if (kgpio != NULL) {
usr/src/uts/common/io/gpio/kgpio.c
821
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
822
if ((kgpio->kgpio_flags & KGPIO_F_VALID) != 0) {
usr/src/uts/common/io/gpio/kgpio.c
823
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
828
if (kgpio->kgpio_ngpios != ngpio) {
usr/src/uts/common/io/gpio/kgpio.c
831
kgpio->kgpio_ngpios, ngpio);
usr/src/uts/common/io/gpio/kgpio.c
832
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
842
kgpio->kgpio_flags |= KGPIO_F_VALID;
usr/src/uts/common/io/gpio/kgpio.c
843
kgpio->kgpio_ops = ops;
usr/src/uts/common/io/gpio/kgpio.c
844
kgpio->kgpio_drv = arg;
usr/src/uts/common/io/gpio/kgpio.c
845
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
850
kgpio = kmem_zalloc(sizeof (kgpio_t), KM_SLEEP);
usr/src/uts/common/io/gpio/kgpio.c
851
kgpio->kgpio_dip = dip;
usr/src/uts/common/io/gpio/kgpio.c
852
kgpio->kgpio_ngpios = ngpio;
usr/src/uts/common/io/gpio/kgpio.c
853
kgpio->kgpio_ops = ops;
usr/src/uts/common/io/gpio/kgpio.c
854
kgpio->kgpio_drv = arg;
usr/src/uts/common/io/gpio/kgpio.c
856
mutex_init(&kgpio->kgpio_mutex, NULL, MUTEX_DRIVER, NULL);
usr/src/uts/common/io/gpio/kgpio.c
857
cv_init(&kgpio->kgpio_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/common/io/gpio/kgpio.c
859
if (snprintf(kgpio->kgpio_mname, sizeof (kgpio->kgpio_mname), "%s%d",
usr/src/uts/common/io/gpio/kgpio.c
861
sizeof (kgpio->kgpio_mname)) {
usr/src/uts/common/io/gpio/kgpio.c
865
kgpio_cleanup(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
869
kgpio->kgpio_minor.kminor_id = id_alloc_nosleep(kgpio_g_ids);
usr/src/uts/common/io/gpio/kgpio.c
870
if (kgpio->kgpio_minor.kminor_id == -1) {
usr/src/uts/common/io/gpio/kgpio.c
872
kgpio_cleanup(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
875
kgpio->kgpio_minor.kminor_type = KGPIO_MINOR_T_CTRL;
usr/src/uts/common/io/gpio/kgpio.c
876
kgpio->kgpio_minor.kminor_data.kminor_ctrl = kgpio;
usr/src/uts/common/io/gpio/kgpio.c
878
kgpio->kgpio_cb.ddiub_cb = kgpio_unbind_cb;
usr/src/uts/common/io/gpio/kgpio.c
879
kgpio->kgpio_cb.ddiub_arg = kgpio;
usr/src/uts/common/io/gpio/kgpio.c
880
e_ddi_register_unbind_callback(dip, &kgpio->kgpio_cb);
usr/src/uts/common/io/gpio/kgpio.c
881
kgpio->kgpio_flags |= KGPIO_F_VALID;
usr/src/uts/common/io/gpio/kgpio.c
892
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
893
kgpio_create_minor(kgpio);
usr/src/uts/common/io/gpio/kgpio.c
894
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
897
list_insert_tail(&kgpio_g_gpios, kgpio);
usr/src/uts/common/io/gpio/kgpio.c
898
avl_add(&kgpio_g_minors, &kgpio->kgpio_minor);
usr/src/uts/common/io/gpio/kgpio.c
939
kgpio_release(kgpio_t *kgpio)
usr/src/uts/common/io/gpio/kgpio.c
941
ddi_release_devi(kgpio->kgpio_dip);
usr/src/uts/common/io/gpio/kgpio.c
943
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
944
VERIFY(kgpio->kgpio_flags & KGPIO_F_HELD);
usr/src/uts/common/io/gpio/kgpio.c
945
kgpio->kgpio_flags &= ~KGPIO_F_HELD;
usr/src/uts/common/io/gpio/kgpio.c
946
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
950
kgpio_release_meta(kgpio_t *kgpio)
usr/src/uts/common/io/gpio/kgpio.c
952
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
953
VERIFY(kgpio->kgpio_flags & KGPIO_F_META_WORK);
usr/src/uts/common/io/gpio/kgpio.c
954
kgpio->kgpio_flags &= ~KGPIO_F_META_WORK;
usr/src/uts/common/io/gpio/kgpio.c
955
cv_broadcast(&kgpio->kgpio_cv);
usr/src/uts/common/io/gpio/kgpio.c
956
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
962
kgpio_t *kgpio;
usr/src/uts/common/io/gpio/kgpio.c
977
kgpio = minor->kminor_data.kminor_ctrl;
usr/src/uts/common/io/gpio/kgpio.c
979
mutex_enter(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
980
if ((kgpio->kgpio_flags & KGPIO_F_REMOVED) != 0) {
usr/src/uts/common/io/gpio/kgpio.c
981
mutex_exit(&kgpio->kgpio_mutex);
usr/src/uts/common/io/gpio/kgpio.c
992
if ((kgpio->kgpio_flags & (KGPIO_F_VALID | KGPIO_F_HELD)) ==
usr/src/uts/common/io/gpio/kgpio.c
994
mutex_exit(&kgpio->kgpio_mutex);