gpio-sch311x.c (a02001086bbfb4da35d1228bebc2f1b442db455f) gpio-sch311x.c (58383c78425e4ee1c077253cf297b641c861c02e)
1/*
2 * GPIO driver for the SMSC SCH311x Super-I/O chips
3 *
4 * Copyright (C) 2013 Bruno Randolf <br1@einfach.org>
5 *
6 * SuperIO functions and chip detection:
7 * (c) Copyright 2008 Wim Van Sebroeck <wim@iguana.be>.
8 *

--- 135 unchanged lines hidden (view full) ---

144{
145 struct sch311x_gpio_block *block = to_sch311x_gpio_block(chip);
146
147 if (block->config_regs[offset] == 0) /* GPIO is not available */
148 return -ENODEV;
149
150 if (!request_region(block->runtime_reg + block->config_regs[offset],
151 1, DRV_NAME)) {
1/*
2 * GPIO driver for the SMSC SCH311x Super-I/O chips
3 *
4 * Copyright (C) 2013 Bruno Randolf <br1@einfach.org>
5 *
6 * SuperIO functions and chip detection:
7 * (c) Copyright 2008 Wim Van Sebroeck <wim@iguana.be>.
8 *

--- 135 unchanged lines hidden (view full) ---

144{
145 struct sch311x_gpio_block *block = to_sch311x_gpio_block(chip);
146
147 if (block->config_regs[offset] == 0) /* GPIO is not available */
148 return -ENODEV;
149
150 if (!request_region(block->runtime_reg + block->config_regs[offset],
151 1, DRV_NAME)) {
152 dev_err(chip->dev, "Failed to request region 0x%04x.\n",
152 dev_err(chip->parent, "Failed to request region 0x%04x.\n",
153 block->runtime_reg + block->config_regs[offset]);
154 return -EBUSY;
155 }
156 return 0;
157}
158
159static void sch311x_gpio_free(struct gpio_chip *chip, unsigned offset)
160{

--- 95 unchanged lines hidden (view full) ---

256 block->chip.owner = THIS_MODULE;
257 block->chip.request = sch311x_gpio_request;
258 block->chip.free = sch311x_gpio_free;
259 block->chip.direction_input = sch311x_gpio_direction_in;
260 block->chip.direction_output = sch311x_gpio_direction_out;
261 block->chip.get = sch311x_gpio_get;
262 block->chip.set = sch311x_gpio_set;
263 block->chip.ngpio = 8;
153 block->runtime_reg + block->config_regs[offset]);
154 return -EBUSY;
155 }
156 return 0;
157}
158
159static void sch311x_gpio_free(struct gpio_chip *chip, unsigned offset)
160{

--- 95 unchanged lines hidden (view full) ---

256 block->chip.owner = THIS_MODULE;
257 block->chip.request = sch311x_gpio_request;
258 block->chip.free = sch311x_gpio_free;
259 block->chip.direction_input = sch311x_gpio_direction_in;
260 block->chip.direction_output = sch311x_gpio_direction_out;
261 block->chip.get = sch311x_gpio_get;
262 block->chip.set = sch311x_gpio_set;
263 block->chip.ngpio = 8;
264 block->chip.dev = &pdev->dev;
264 block->chip.parent = &pdev->dev;
265 block->chip.base = sch311x_gpio_blocks[i].base;
266 block->config_regs = sch311x_gpio_blocks[i].config_regs;
267 block->data_reg = sch311x_gpio_blocks[i].data_reg;
268 block->runtime_reg = pdata->runtime_reg;
269
270 err = gpiochip_add(&block->chip);
271 if (err < 0) {
272 dev_err(&pdev->dev,

--- 166 unchanged lines hidden ---
265 block->chip.base = sch311x_gpio_blocks[i].base;
266 block->config_regs = sch311x_gpio_blocks[i].config_regs;
267 block->data_reg = sch311x_gpio_blocks[i].data_reg;
268 block->runtime_reg = pdata->runtime_reg;
269
270 err = gpiochip_add(&block->chip);
271 if (err < 0) {
272 dev_err(&pdev->dev,

--- 166 unchanged lines hidden ---