Lines Matching refs:block

39 struct sch311x_gpio_block {		/* one GPIO block runtime data */
44 spinlock_t lock; /* lock for this GPIO block */
134 struct sch311x_gpio_block *block = gpiochip_get_data(chip);
136 if (block->config_regs[offset] == 0) /* GPIO is not available */
139 if (!request_region(block->runtime_reg + block->config_regs[offset],
142 block->runtime_reg + block->config_regs[offset]);
150 struct sch311x_gpio_block *block = gpiochip_get_data(chip);
152 if (block->config_regs[offset] == 0) /* GPIO is not available */
155 release_region(block->runtime_reg + block->config_regs[offset], 1);
160 struct sch311x_gpio_block *block = gpiochip_get_data(chip);
163 spin_lock(&block->lock);
164 data = inb(block->runtime_reg + block->data_reg);
165 spin_unlock(&block->lock);
170 static void __sch311x_gpio_set(struct sch311x_gpio_block *block,
173 u8 data = inb(block->runtime_reg + block->data_reg);
178 outb(data, block->runtime_reg + block->data_reg);
184 struct sch311x_gpio_block *block = gpiochip_get_data(chip);
186 spin_lock(&block->lock);
187 __sch311x_gpio_set(block, offset, value);
188 spin_unlock(&block->lock);
193 struct sch311x_gpio_block *block = gpiochip_get_data(chip);
196 spin_lock(&block->lock);
197 data = inb(block->runtime_reg + block->config_regs[offset]);
199 outb(data, block->runtime_reg + block->config_regs[offset]);
200 spin_unlock(&block->lock);
208 struct sch311x_gpio_block *block = gpiochip_get_data(chip);
211 spin_lock(&block->lock);
213 data = inb(block->runtime_reg + block->config_regs[offset]);
215 outb(data, block->runtime_reg + block->config_regs[offset]);
216 __sch311x_gpio_set(block, offset, value);
218 spin_unlock(&block->lock);
224 struct sch311x_gpio_block *block = gpiochip_get_data(chip);
227 spin_lock(&block->lock);
228 data = inb(block->runtime_reg + block->config_regs[offset]);
229 spin_unlock(&block->lock);
240 struct sch311x_gpio_block *block = gpiochip_get_data(chip);
246 spin_lock(&block->lock);
247 data = inb(block->runtime_reg + block->config_regs[offset]);
249 outb(data, block->runtime_reg + block->config_regs[offset]);
250 spin_unlock(&block->lock);
253 spin_lock(&block->lock);
254 data = inb(block->runtime_reg + block->config_regs[offset]);
256 outb(data, block->runtime_reg + block->config_regs[offset]);
257 spin_unlock(&block->lock);
269 struct sch311x_gpio_block *block;
285 block = &priv->blocks[i];
287 spin_lock_init(&block->lock);
289 block->chip.label = DRV_NAME;
290 block->chip.owner = THIS_MODULE;
291 block->chip.request = sch311x_gpio_request;
292 block->chip.free = sch311x_gpio_free;
293 block->chip.direction_input = sch311x_gpio_direction_in;
294 block->chip.direction_output = sch311x_gpio_direction_out;
295 block->chip.get_direction = sch311x_gpio_get_direction;
296 block->chip.set_config = sch311x_gpio_set_config;
297 block->chip.get = sch311x_gpio_get;
298 block->chip.set = sch311x_gpio_set;
299 block->chip.ngpio = 8;
300 block->chip.parent = &pdev->dev;
301 block->chip.base = sch311x_gpio_blocks[i].base;
302 block->config_regs = sch311x_gpio_blocks[i].config_regs;
303 block->data_reg = sch311x_gpio_blocks[i].data_reg;
304 block->runtime_reg = pdata->runtime_reg;
306 err = devm_gpiochip_add_data(&pdev->dev, &block->chip, block);
313 "SMSC SCH311x GPIO block %d registered.\n", i);