gpio-ts5500.c (01b944fe1cd4e21a2a9ed51adbdbafe2d5e905ba) | gpio-ts5500.c (58383c78425e4ee1c077253cf297b641c861c02e) |
---|---|
1/* 2 * Digital I/O driver for Technologic Systems TS-5500 3 * 4 * Copyright (c) 2012 Savoir-faire Linux Inc. 5 * Vivien Didelot <vivien.didelot@savoirfairelinux.com> 6 * 7 * Technologic Systems platforms have pin blocks, exposing several Digital 8 * Input/Output lines (DIO). This driver aims to support single pin blocks. --- 301 unchanged lines hidden (view full) --- 310 spin_lock_irqsave(&priv->lock, flags); 311 if (priv->hwirq == 7) 312 ts5500_clear_mask(BIT(7), 0x7a); /* DIO1_13 on IRQ7 */ 313 else if (priv->hwirq == 6) 314 ts5500_clear_mask(BIT(7), 0x7d); /* DIO2_13 on IRQ6 */ 315 else if (priv->hwirq == 1) 316 ts5500_clear_mask(BIT(6), 0x7d); /* LCD_RS on IRQ1 */ 317 else | 1/* 2 * Digital I/O driver for Technologic Systems TS-5500 3 * 4 * Copyright (c) 2012 Savoir-faire Linux Inc. 5 * Vivien Didelot <vivien.didelot@savoirfairelinux.com> 6 * 7 * Technologic Systems platforms have pin blocks, exposing several Digital 8 * Input/Output lines (DIO). This driver aims to support single pin blocks. --- 301 unchanged lines hidden (view full) --- 310 spin_lock_irqsave(&priv->lock, flags); 311 if (priv->hwirq == 7) 312 ts5500_clear_mask(BIT(7), 0x7a); /* DIO1_13 on IRQ7 */ 313 else if (priv->hwirq == 6) 314 ts5500_clear_mask(BIT(7), 0x7d); /* DIO2_13 on IRQ6 */ 315 else if (priv->hwirq == 1) 316 ts5500_clear_mask(BIT(6), 0x7d); /* LCD_RS on IRQ1 */ 317 else |
318 dev_err(priv->gpio_chip.dev, "invalid hwirq %d\n", priv->hwirq); | 318 dev_err(priv->gpio_chip.parent, "invalid hwirq %d\n", 319 priv->hwirq); |
319 spin_unlock_irqrestore(&priv->lock, flags); 320} 321 322static int ts5500_dio_probe(struct platform_device *pdev) 323{ 324 enum ts5500_blocks block = platform_get_device_id(pdev)->driver_data; 325 struct ts5500_dio_platform_data *pdata = dev_get_platdata(&pdev->dev); 326 struct device *dev = &pdev->dev; --- 14 unchanged lines hidden (view full) --- 341 return -ENOMEM; 342 343 platform_set_drvdata(pdev, priv); 344 priv->hwirq = res->start; 345 spin_lock_init(&priv->lock); 346 347 priv->gpio_chip.owner = THIS_MODULE; 348 priv->gpio_chip.label = name; | 320 spin_unlock_irqrestore(&priv->lock, flags); 321} 322 323static int ts5500_dio_probe(struct platform_device *pdev) 324{ 325 enum ts5500_blocks block = platform_get_device_id(pdev)->driver_data; 326 struct ts5500_dio_platform_data *pdata = dev_get_platdata(&pdev->dev); 327 struct device *dev = &pdev->dev; --- 14 unchanged lines hidden (view full) --- 342 return -ENOMEM; 343 344 platform_set_drvdata(pdev, priv); 345 priv->hwirq = res->start; 346 spin_lock_init(&priv->lock); 347 348 priv->gpio_chip.owner = THIS_MODULE; 349 priv->gpio_chip.label = name; |
349 priv->gpio_chip.dev = dev; | 350 priv->gpio_chip.parent = dev; |
350 priv->gpio_chip.direction_input = ts5500_gpio_input; 351 priv->gpio_chip.direction_output = ts5500_gpio_output; 352 priv->gpio_chip.get = ts5500_gpio_get; 353 priv->gpio_chip.set = ts5500_gpio_set; 354 priv->gpio_chip.to_irq = ts5500_gpio_to_irq; 355 priv->gpio_chip.base = -1; 356 if (pdata) { 357 priv->gpio_chip.base = pdata->base; --- 108 unchanged lines hidden --- | 351 priv->gpio_chip.direction_input = ts5500_gpio_input; 352 priv->gpio_chip.direction_output = ts5500_gpio_output; 353 priv->gpio_chip.get = ts5500_gpio_get; 354 priv->gpio_chip.set = ts5500_gpio_set; 355 priv->gpio_chip.to_irq = ts5500_gpio_to_irq; 356 priv->gpio_chip.base = -1; 357 if (pdata) { 358 priv->gpio_chip.base = pdata->base; --- 108 unchanged lines hidden --- |