Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c91799c5 authored by Alexander Aring's avatar Alexander Aring Committed by Marcel Holtmann
Browse files

at86rf230: add warning if edge-triggered irq



While testing I experience a deadlock while using the at86rf233 on a
raspberry pi. The reason was an edge triggered gpio irq because the irq
triggered while irq was disabled. This issue doesn't happend on a level
triggered irq because the irq will hit after calling enable_irq.

This patch adds a warning that it's not recommended to use a edge-triggered
irq type. Also change the examples to high-level irqtype.

Signed-off-by: default avatarAlexander Aring <alex.aring@gmail.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 702d211c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -6,7 +6,8 @@ Required properties:
  - spi-max-frequency:	maximal bus speed, should be set to 7500000 depends
			sync or async operation mode
  - reg:		the chipselect index
  - interrupts:		the interrupt generated by the device
  - interrupts:		the interrupt generated by the device. Non high-level
			can occur deadlocks while handling isr.

Optional properties:
  - reset-gpio:		GPIO spec for the rstn pin
@@ -20,7 +21,7 @@ Example:
		compatible = "atmel,at86rf231";
		spi-max-frequency = <7500000>;
		reg = <0>;
		interrupts = <19 1>;
		interrupts = <19 4>;
		interrupt-parent = <&gpio3>;
		xtal-trim = /bits/ 8 <0x06>;
	};
+4 −0
Original line number Diff line number Diff line
@@ -1321,6 +1321,10 @@ static int at86rf230_hw_init(struct at86rf230_local *lp, u8 xtal_trim)
		return rc;

	irq_type = irq_get_trigger_type(lp->spi->irq);
	if (irq_type == IRQ_TYPE_EDGE_RISING ||
	    irq_type == IRQ_TYPE_EDGE_FALLING)
		dev_warn(&lp->spi->dev,
			 "Using edge triggered irq's are not recommended!\n");
	if (irq_type == IRQ_TYPE_EDGE_FALLING ||
	    irq_type == IRQ_TYPE_LEVEL_LOW)
		irq_pol = IRQ_ACTIVE_LOW;