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