mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-02-13 03:41:54 +00:00
Remove RPI patches not needed anymore
This commit is contained in:
parent
85acbc94ae
commit
64e60c9c50
2 changed files with 0 additions and 153 deletions
|
@ -1,36 +0,0 @@
|
||||||
From 789f95f2a444c44ad576578213c430ba4ed27321 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Allen Wild <allenwild93@gmail.com>
|
|
||||||
Date: Tue, 26 Sep 2017 19:37:44 +0200
|
|
||||||
Subject: [PATCH 153/277] thermal: enable broadcom menu for arm64 bcm2835
|
|
||||||
|
|
||||||
Moving the bcm2835 thermal driver to the broadcom directory prevented it
|
|
||||||
from getting enabled for arm64 builds, since the broadcom directory is only
|
|
||||||
available when 32-bit specific ARCH_BCM is set.
|
|
||||||
|
|
||||||
Fix this by enabling the Broadcom menu for ARCH_BCM or ARCH_BCM2835.
|
|
||||||
|
|
||||||
Fixes: 6892cf07e733 ("thermal: bcm2835: move to the broadcom subdirectory")
|
|
||||||
Reviewed-by: Eric Anholt <eric@anholt.net>
|
|
||||||
Signed-off-by: Allen Wild <allenwild93@gmail.com>
|
|
||||||
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
|
||||||
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
|
|
||||||
---
|
|
||||||
drivers/thermal/Kconfig | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
|
|
||||||
index 07002df4f83a..e3f0d1fd1720 100644
|
|
||||||
--- a/drivers/thermal/Kconfig
|
|
||||||
+++ b/drivers/thermal/Kconfig
|
|
||||||
@@ -408,7 +408,7 @@ config MTK_THERMAL
|
|
||||||
controller present in Mediatek SoCs
|
|
||||||
|
|
||||||
menu "Broadcom thermal drivers"
|
|
||||||
-depends on ARCH_BCM || COMPILE_TEST
|
|
||||||
+depends on ARCH_BCM || ARCH_BCM2835 || COMPILE_TEST
|
|
||||||
source "drivers/thermal/broadcom/Kconfig"
|
|
||||||
endmenu
|
|
||||||
|
|
||||||
--
|
|
||||||
2.16.1
|
|
||||||
|
|
|
@ -1,117 +0,0 @@
|
||||||
From dbca2148f4c21454da461f1208b05d3a5887d133 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Phil Elwell <phil@raspberrypi.org>
|
|
||||||
Date: Tue, 20 Feb 2018 11:48:15 +0000
|
|
||||||
Subject: [PATCH 246/277] sc16is7xx: Fix for multi-channel stall
|
|
||||||
|
|
||||||
The SC16IS752 is a dual-channel device. The two channels are largely
|
|
||||||
independent, but the IRQ signals are wired together as an open-drain,
|
|
||||||
active low signal which will be driven low while either of the
|
|
||||||
channels requires attention, which can be for significant periods of
|
|
||||||
time until operations complete and the interrupt can be acknowledged.
|
|
||||||
In that respect it is should be treated as a true level-sensitive IRQ.
|
|
||||||
|
|
||||||
The kernel, however, needs to be able to exit interrupt context in
|
|
||||||
order to use I2C or SPI to access the device registers (which may
|
|
||||||
involve sleeping). Therefore the interrupt needs to be masked out or
|
|
||||||
paused in some way.
|
|
||||||
|
|
||||||
The usual way to manage sleeping from within an interrupt handler
|
|
||||||
is to use a threaded interrupt handler - a regular interrupt routine
|
|
||||||
does the minimum amount of work needed to triage the interrupt before
|
|
||||||
waking the interrupt service thread. If the threaded IRQ is marked as
|
|
||||||
IRQF_ONESHOT the kernel will automatically mask out the interrupt
|
|
||||||
until the thread runs to completion. The sc16is7xx driver used to
|
|
||||||
use a threaded IRQ, but a patch switched to using a kthread_worker
|
|
||||||
in order to set realtime priorities on the handler thread and for
|
|
||||||
other optimisations. The end result is non-threaded IRQ that
|
|
||||||
schedules some work then returns IRQ_HANDLED, making the kernel
|
|
||||||
think that all IRQ processing has completed.
|
|
||||||
|
|
||||||
The work-around to prevent a constant stream of interrupts is to
|
|
||||||
mark the interrupt as edge-sensitive rather than level-sensitive,
|
|
||||||
but interpreting an active-low source as a falling-edge source
|
|
||||||
requires care to prevent a total cessation of interrupts. Whereas
|
|
||||||
an edge-triggering source will generate a new edge for every interrupt
|
|
||||||
condition a level-triggering source will keep the signal at the
|
|
||||||
interrupting level until it no longer requires attention; in other
|
|
||||||
words, the host won't see another edge until all interrupt conditions
|
|
||||||
are cleared. It is therefore vital that the interrupt handler does not
|
|
||||||
exit with an outstanding interrupt condition, otherwise the kernel
|
|
||||||
will not receive another interrupt unless some other operation causes
|
|
||||||
the interrupt state on the device to be cleared.
|
|
||||||
|
|
||||||
The existing sc16is7xx driver has a very simple interrupt "thread"
|
|
||||||
(kthread_work job) that processes interrups on each channel in turn
|
|
||||||
until there are no more. If both channels are active and the first
|
|
||||||
channel starts interrupting while the handler for the second channel
|
|
||||||
is running then it will not be detected and an IRQ stall ensues. This
|
|
||||||
could be handled easily if there was a shared IRQ status register, or
|
|
||||||
a convenient way to determine if the IRQ had been deasserted for any
|
|
||||||
length of time, but both appear to be lacking.
|
|
||||||
|
|
||||||
Avoid this problem (or at least make it much less likely to happen)
|
|
||||||
by reducing the granularity of per-channel interrupt processing
|
|
||||||
to one condition per iteration, only exiting the overall loop when
|
|
||||||
both channels are no longer interrupting.
|
|
||||||
|
|
||||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|
||||||
---
|
|
||||||
drivers/tty/serial/sc16is7xx.c | 22 ++++++++++++++++------
|
|
||||||
1 file changed, 16 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
|
|
||||||
index ca54ce074a5f..e8b928877e66 100644
|
|
||||||
--- a/drivers/tty/serial/sc16is7xx.c
|
|
||||||
+++ b/drivers/tty/serial/sc16is7xx.c
|
|
||||||
@@ -662,7 +662,7 @@ static void sc16is7xx_handle_tx(struct uart_port *port)
|
|
||||||
uart_write_wakeup(port);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno)
|
|
||||||
+static bool sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno)
|
|
||||||
{
|
|
||||||
struct uart_port *port = &s->p[portno].port;
|
|
||||||
|
|
||||||
@@ -671,7 +671,7 @@ static void sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno)
|
|
||||||
|
|
||||||
iir = sc16is7xx_port_read(port, SC16IS7XX_IIR_REG);
|
|
||||||
if (iir & SC16IS7XX_IIR_NO_INT_BIT)
|
|
||||||
- break;
|
|
||||||
+ return false;
|
|
||||||
|
|
||||||
iir &= SC16IS7XX_IIR_ID_MASK;
|
|
||||||
|
|
||||||
@@ -693,16 +693,26 @@ static void sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno)
|
|
||||||
port->line, iir);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
- } while (1);
|
|
||||||
+ } while (0);
|
|
||||||
+ return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sc16is7xx_ist(struct kthread_work *ws)
|
|
||||||
{
|
|
||||||
struct sc16is7xx_port *s = to_sc16is7xx_port(ws, irq_work);
|
|
||||||
- int i;
|
|
||||||
|
|
||||||
- for (i = 0; i < s->devtype->nr_uart; ++i)
|
|
||||||
- sc16is7xx_port_irq(s, i);
|
|
||||||
+ while (1)
|
|
||||||
+ {
|
|
||||||
+ bool keep_polling = false;
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < s->devtype->nr_uart; ++i)
|
|
||||||
+ {
|
|
||||||
+ keep_polling |= sc16is7xx_port_irq(s, i);
|
|
||||||
+ }
|
|
||||||
+ if (!keep_polling)
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
static irqreturn_t sc16is7xx_irq(int irq, void *dev_id)
|
|
||||||
--
|
|
||||||
2.16.1
|
|
||||||
|
|
Loading…
Reference in a new issue