hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
kernel/drivers/gpio/gpio-xilinx.c
....@@ -45,7 +45,7 @@
4545 unsigned int gpio_width[2];
4646 u32 gpio_state[2];
4747 u32 gpio_dir[2];
48
- spinlock_t gpio_lock[2];
48
+ hard_spinlock_t gpio_lock[2];
4949 };
5050
5151 static inline int xgpio_index(struct xgpio_instance *chip, int gpio)
....@@ -110,7 +110,7 @@
110110 int index = xgpio_index(chip, gpio);
111111 int offset = xgpio_offset(chip, gpio);
112112
113
- spin_lock_irqsave(&chip->gpio_lock[index], flags);
113
+ raw_spin_lock_irqsave(&chip->gpio_lock[index], flags);
114114
115115 /* Write to GPIO signal and set its direction to output */
116116 if (val)
....@@ -121,7 +121,7 @@
121121 xgpio_writereg(chip->regs + XGPIO_DATA_OFFSET +
122122 xgpio_regoffset(chip, gpio), chip->gpio_state[index]);
123123
124
- spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
124
+ raw_spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
125125 }
126126
127127 /**
....@@ -141,7 +141,7 @@
141141 int index = xgpio_index(chip, 0);
142142 int offset, i;
143143
144
- spin_lock_irqsave(&chip->gpio_lock[index], flags);
144
+ raw_spin_lock_irqsave(&chip->gpio_lock[index], flags);
145145
146146 /* Write to GPIO signals */
147147 for (i = 0; i < gc->ngpio; i++) {
....@@ -152,9 +152,9 @@
152152 xgpio_writereg(chip->regs + XGPIO_DATA_OFFSET +
153153 index * XGPIO_CHANNEL_OFFSET,
154154 chip->gpio_state[index]);
155
- spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
155
+ raw_spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
156156 index = xgpio_index(chip, i);
157
- spin_lock_irqsave(&chip->gpio_lock[index], flags);
157
+ raw_spin_lock_irqsave(&chip->gpio_lock[index], flags);
158158 }
159159 if (__test_and_clear_bit(i, mask)) {
160160 offset = xgpio_offset(chip, i);
....@@ -168,7 +168,7 @@
168168 xgpio_writereg(chip->regs + XGPIO_DATA_OFFSET +
169169 index * XGPIO_CHANNEL_OFFSET, chip->gpio_state[index]);
170170
171
- spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
171
+ raw_spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
172172 }
173173
174174 /**
....@@ -187,14 +187,14 @@
187187 int index = xgpio_index(chip, gpio);
188188 int offset = xgpio_offset(chip, gpio);
189189
190
- spin_lock_irqsave(&chip->gpio_lock[index], flags);
190
+ raw_spin_lock_irqsave(&chip->gpio_lock[index], flags);
191191
192192 /* Set the GPIO bit in shadow register and set direction as input */
193193 chip->gpio_dir[index] |= BIT(offset);
194194 xgpio_writereg(chip->regs + XGPIO_TRI_OFFSET +
195195 xgpio_regoffset(chip, gpio), chip->gpio_dir[index]);
196196
197
- spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
197
+ raw_spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
198198
199199 return 0;
200200 }
....@@ -218,7 +218,7 @@
218218 int index = xgpio_index(chip, gpio);
219219 int offset = xgpio_offset(chip, gpio);
220220
221
- spin_lock_irqsave(&chip->gpio_lock[index], flags);
221
+ raw_spin_lock_irqsave(&chip->gpio_lock[index], flags);
222222
223223 /* Write state of GPIO signal */
224224 if (val)
....@@ -233,7 +233,7 @@
233233 xgpio_writereg(chip->regs + XGPIO_TRI_OFFSET +
234234 xgpio_regoffset(chip, gpio), chip->gpio_dir[index]);
235235
236
- spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
236
+ raw_spin_unlock_irqrestore(&chip->gpio_lock[index], flags);
237237
238238 return 0;
239239 }
....@@ -291,7 +291,7 @@
291291 if (of_property_read_u32(np, "xlnx,gpio-width", &chip->gpio_width[0]))
292292 chip->gpio_width[0] = 32;
293293
294
- spin_lock_init(&chip->gpio_lock[0]);
294
+ raw_spin_lock_init(&chip->gpio_lock[0]);
295295
296296 if (of_property_read_u32(np, "xlnx,is-dual", &is_dual))
297297 is_dual = 0;
....@@ -314,7 +314,7 @@
314314 &chip->gpio_width[1]))
315315 chip->gpio_width[1] = 32;
316316
317
- spin_lock_init(&chip->gpio_lock[1]);
317
+ raw_spin_lock_init(&chip->gpio_lock[1]);
318318 }
319319
320320 chip->gc.base = -1;