.. | .. |
---|
81 | 81 | struct gpiod_data *data = dev_get_drvdata(dev); |
---|
82 | 82 | struct gpio_desc *desc = data->desc; |
---|
83 | 83 | ssize_t status; |
---|
| 84 | + int offset; |
---|
84 | 85 | |
---|
85 | 86 | mutex_lock(&data->mutex); |
---|
86 | | - |
---|
| 87 | + offset = gpio_chip_hwgpio(desc); |
---|
87 | 88 | if (sysfs_streq(buf, "high")) |
---|
88 | 89 | status = gpiod_direction_output_raw(desc, 1); |
---|
89 | 90 | else if (sysfs_streq(buf, "out") || sysfs_streq(buf, "low")) |
---|
90 | | - status = gpiod_direction_output_raw(desc, 0); |
---|
| 91 | + if (( offset == 8 ) || ( offset == 11 ) || ( offset == 12 ) || ( offset == 13 ) || ( offset == 14 )) |
---|
| 92 | + status = gpiod_direction_output_raw(desc, 1); |
---|
| 93 | + else |
---|
| 94 | + status = gpiod_direction_output_raw(desc, 0); |
---|
91 | 95 | else if (sysfs_streq(buf, "in")) |
---|
92 | 96 | status = gpiod_direction_input(desc); |
---|
93 | 97 | else |
---|