at86rf230: use irq_get_trigger_type
This patch removes the platform data for the irq_type. We use instead the irq_get_trigger_type function to get these flags which should already configured by the interrupt controller. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7f51531c11
commit
4af619ae2c
|
@ -23,6 +23,7 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/irq.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
|
@ -970,8 +971,7 @@ static int at86rf230_irq_polarity(struct at86rf230_local *lp, int pol)
|
||||||
|
|
||||||
static int at86rf230_hw_init(struct at86rf230_local *lp)
|
static int at86rf230_hw_init(struct at86rf230_local *lp)
|
||||||
{
|
{
|
||||||
struct at86rf230_platform_data *pdata = lp->spi->dev.platform_data;
|
int rc, irq_pol, irq_type;
|
||||||
int rc, irq_pol;
|
|
||||||
u8 status;
|
u8 status;
|
||||||
u8 csma_seed[2];
|
u8 csma_seed[2];
|
||||||
|
|
||||||
|
@ -983,8 +983,9 @@ static int at86rf230_hw_init(struct at86rf230_local *lp)
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
|
irq_type = irq_get_trigger_type(lp->spi->irq);
|
||||||
/* configure irq polarity, defaults to high active */
|
/* configure irq polarity, defaults to high active */
|
||||||
if (pdata->irq_type & (IRQF_TRIGGER_FALLING | IRQF_TRIGGER_LOW))
|
if (irq_type & (IRQF_TRIGGER_FALLING | IRQF_TRIGGER_LOW))
|
||||||
irq_pol = IRQ_ACTIVE_LOW;
|
irq_pol = IRQ_ACTIVE_LOW;
|
||||||
else
|
else
|
||||||
irq_pol = IRQ_ACTIVE_HIGH;
|
irq_pol = IRQ_ACTIVE_HIGH;
|
||||||
|
@ -1032,7 +1033,6 @@ static struct at86rf230_platform_data *
|
||||||
at86rf230_get_pdata(struct spi_device *spi)
|
at86rf230_get_pdata(struct spi_device *spi)
|
||||||
{
|
{
|
||||||
struct at86rf230_platform_data *pdata;
|
struct at86rf230_platform_data *pdata;
|
||||||
const char *irq_type;
|
|
||||||
|
|
||||||
if (!IS_ENABLED(CONFIG_OF) || !spi->dev.of_node)
|
if (!IS_ENABLED(CONFIG_OF) || !spi->dev.of_node)
|
||||||
return spi->dev.platform_data;
|
return spi->dev.platform_data;
|
||||||
|
@ -1044,19 +1044,6 @@ at86rf230_get_pdata(struct spi_device *spi)
|
||||||
pdata->rstn = of_get_named_gpio(spi->dev.of_node, "reset-gpio", 0);
|
pdata->rstn = of_get_named_gpio(spi->dev.of_node, "reset-gpio", 0);
|
||||||
pdata->slp_tr = of_get_named_gpio(spi->dev.of_node, "sleep-gpio", 0);
|
pdata->slp_tr = of_get_named_gpio(spi->dev.of_node, "sleep-gpio", 0);
|
||||||
|
|
||||||
pdata->irq_type = IRQF_TRIGGER_RISING;
|
|
||||||
of_property_read_string(spi->dev.of_node, "irq-type", &irq_type);
|
|
||||||
if (!strcmp(irq_type, "level-high"))
|
|
||||||
pdata->irq_type = IRQF_TRIGGER_HIGH;
|
|
||||||
else if (!strcmp(irq_type, "level-low"))
|
|
||||||
pdata->irq_type = IRQF_TRIGGER_LOW;
|
|
||||||
else if (!strcmp(irq_type, "edge-rising"))
|
|
||||||
pdata->irq_type = IRQF_TRIGGER_RISING;
|
|
||||||
else if (!strcmp(irq_type, "edge-falling"))
|
|
||||||
pdata->irq_type = IRQF_TRIGGER_FALLING;
|
|
||||||
else
|
|
||||||
dev_warn(&spi->dev, "wrong irq-type specified using edge-rising\n");
|
|
||||||
|
|
||||||
spi->dev.platform_data = pdata;
|
spi->dev.platform_data = pdata;
|
||||||
done:
|
done:
|
||||||
return pdata;
|
return pdata;
|
||||||
|
@ -1071,7 +1058,7 @@ static int at86rf230_probe(struct spi_device *spi)
|
||||||
u8 part = 0, version = 0, status;
|
u8 part = 0, version = 0, status;
|
||||||
irq_handler_t irq_handler;
|
irq_handler_t irq_handler;
|
||||||
work_func_t irq_worker;
|
work_func_t irq_worker;
|
||||||
int rc;
|
int rc, irq_type;
|
||||||
const char *chip;
|
const char *chip;
|
||||||
struct ieee802154_ops *ops = NULL;
|
struct ieee802154_ops *ops = NULL;
|
||||||
|
|
||||||
|
@ -1176,7 +1163,8 @@ static int at86rf230_probe(struct spi_device *spi)
|
||||||
dev->extra_tx_headroom = 0;
|
dev->extra_tx_headroom = 0;
|
||||||
dev->flags = IEEE802154_HW_OMIT_CKSUM | IEEE802154_HW_AACK;
|
dev->flags = IEEE802154_HW_OMIT_CKSUM | IEEE802154_HW_AACK;
|
||||||
|
|
||||||
if (pdata->irq_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) {
|
irq_type = irq_get_trigger_type(spi->irq);
|
||||||
|
if (irq_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) {
|
||||||
irq_worker = at86rf230_irqwork;
|
irq_worker = at86rf230_irqwork;
|
||||||
irq_handler = at86rf230_isr;
|
irq_handler = at86rf230_isr;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1203,7 +1191,7 @@ static int at86rf230_probe(struct spi_device *spi)
|
||||||
goto err_hw_init;
|
goto err_hw_init;
|
||||||
|
|
||||||
rc = request_irq(spi->irq, irq_handler,
|
rc = request_irq(spi->irq, irq_handler,
|
||||||
IRQF_SHARED | pdata->irq_type,
|
IRQF_SHARED | irq_type,
|
||||||
dev_name(&spi->dev), lp);
|
dev_name(&spi->dev), lp);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto err_hw_init;
|
goto err_hw_init;
|
||||||
|
|
|
@ -26,20 +26,6 @@ struct at86rf230_platform_data {
|
||||||
int rstn;
|
int rstn;
|
||||||
int slp_tr;
|
int slp_tr;
|
||||||
int dig2;
|
int dig2;
|
||||||
|
|
||||||
/* Setting the irq_type will configure the driver to request
|
|
||||||
* the platform irq trigger type according to the given value
|
|
||||||
* and configure the interrupt polarity of the device to the
|
|
||||||
* corresponding polarity.
|
|
||||||
*
|
|
||||||
* Allowed values are: IRQF_TRIGGER_RISING, IRQF_TRIGGER_FALLING,
|
|
||||||
* IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW
|
|
||||||
*
|
|
||||||
* Setting it to 0, the driver does not touch the trigger type
|
|
||||||
* configuration of the interrupt and sets the interrupt polarity
|
|
||||||
* of the device to high active (the default value).
|
|
||||||
*/
|
|
||||||
int irq_type;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue