diff options
Diffstat (limited to 'drivers/gpio/xilinx_gpio.c')
| -rw-r--r-- | drivers/gpio/xilinx_gpio.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/gpio/xilinx_gpio.c b/drivers/gpio/xilinx_gpio.c index b8fa65b5bfca..709690995d0d 100644 --- a/drivers/gpio/xilinx_gpio.c +++ b/drivers/gpio/xilinx_gpio.c | |||
| @@ -161,14 +161,12 @@ static void xgpio_save_regs(struct of_mm_gpio_chip *mm_gc) | |||
| 161 | static int __devinit xgpio_of_probe(struct device_node *np) | 161 | static int __devinit xgpio_of_probe(struct device_node *np) |
| 162 | { | 162 | { |
| 163 | struct xgpio_instance *chip; | 163 | struct xgpio_instance *chip; |
| 164 | struct of_gpio_chip *ofchip; | ||
| 165 | int status = 0; | 164 | int status = 0; |
| 166 | const u32 *tree_info; | 165 | const u32 *tree_info; |
| 167 | 166 | ||
| 168 | chip = kzalloc(sizeof(*chip), GFP_KERNEL); | 167 | chip = kzalloc(sizeof(*chip), GFP_KERNEL); |
| 169 | if (!chip) | 168 | if (!chip) |
| 170 | return -ENOMEM; | 169 | return -ENOMEM; |
| 171 | ofchip = &chip->mmchip.of_gc; | ||
| 172 | 170 | ||
| 173 | /* Update GPIO state shadow register with default value */ | 171 | /* Update GPIO state shadow register with default value */ |
| 174 | tree_info = of_get_property(np, "xlnx,dout-default", NULL); | 172 | tree_info = of_get_property(np, "xlnx,dout-default", NULL); |
| @@ -182,21 +180,20 @@ static int __devinit xgpio_of_probe(struct device_node *np) | |||
| 182 | chip->gpio_dir = *tree_info; | 180 | chip->gpio_dir = *tree_info; |
| 183 | 181 | ||
| 184 | /* Check device node and parent device node for device width */ | 182 | /* Check device node and parent device node for device width */ |
| 185 | ofchip->gc.ngpio = 32; /* By default assume full GPIO controller */ | 183 | chip->mmchip.gc.ngpio = 32; /* By default assume full GPIO controller */ |
| 186 | tree_info = of_get_property(np, "xlnx,gpio-width", NULL); | 184 | tree_info = of_get_property(np, "xlnx,gpio-width", NULL); |
| 187 | if (!tree_info) | 185 | if (!tree_info) |
| 188 | tree_info = of_get_property(np->parent, | 186 | tree_info = of_get_property(np->parent, |
| 189 | "xlnx,gpio-width", NULL); | 187 | "xlnx,gpio-width", NULL); |
| 190 | if (tree_info) | 188 | if (tree_info) |
| 191 | ofchip->gc.ngpio = *tree_info; | 189 | chip->mmchip.gc.ngpio = *tree_info; |
| 192 | 190 | ||
| 193 | spin_lock_init(&chip->gpio_lock); | 191 | spin_lock_init(&chip->gpio_lock); |
| 194 | 192 | ||
| 195 | ofchip->gpio_cells = 2; | 193 | chip->mmchip.gc.direction_input = xgpio_dir_in; |
| 196 | ofchip->gc.direction_input = xgpio_dir_in; | 194 | chip->mmchip.gc.direction_output = xgpio_dir_out; |
| 197 | ofchip->gc.direction_output = xgpio_dir_out; | 195 | chip->mmchip.gc.get = xgpio_get; |
| 198 | ofchip->gc.get = xgpio_get; | 196 | chip->mmchip.gc.set = xgpio_set; |
| 199 | ofchip->gc.set = xgpio_set; | ||
| 200 | 197 | ||
| 201 | chip->mmchip.save_regs = xgpio_save_regs; | 198 | chip->mmchip.save_regs = xgpio_save_regs; |
| 202 | 199 | ||
