diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-6.1/950-1209-media-rp1-Drop-LE-handling.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-6.1/950-1209-media-rp1-Drop-LE-handling.patch | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/target/linux/bcm27xx/patches-6.1/950-1209-media-rp1-Drop-LE-handling.patch b/target/linux/bcm27xx/patches-6.1/950-1209-media-rp1-Drop-LE-handling.patch deleted file mode 100644 index 1d6e396f1c..0000000000 --- a/target/linux/bcm27xx/patches-6.1/950-1209-media-rp1-Drop-LE-handling.patch +++ /dev/null @@ -1,127 +0,0 @@ -From dad296088dffbaf55c1e61cbdc3f7cb1eb504ca6 Mon Sep 17 00:00:00 2001 -From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> -Date: Tue, 16 May 2023 15:51:54 +0300 -Subject: [PATCH] media: rp1: Drop LE handling - -The driver registers for line-end interrupts, but never uses them. This -just causes extra interrupt load, with more complexity in the driver. - -Drop the LE handling. It can easily be added back if later needed. - -Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> ---- - .../media/platform/raspberrypi/rp1_cfe/cfe.c | 6 ++-- - .../media/platform/raspberrypi/rp1_cfe/csi2.c | 28 ++++--------------- - .../media/platform/raspberrypi/rp1_cfe/csi2.h | 2 +- - 3 files changed, 10 insertions(+), 26 deletions(-) - ---- a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c -+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c -@@ -734,13 +734,13 @@ static irqreturn_t cfe_isr(int irq, void - { - struct cfe_device *cfe = dev; - unsigned int i; -- bool sof[NUM_NODES] = {0}, eof[NUM_NODES] = {0}, lci[NUM_NODES] = {0}; -+ bool sof[NUM_NODES] = {0}, eof[NUM_NODES] = {0}; - u32 sts; - - sts = cfg_reg_read(cfe, MIPICFG_INTS); - - if (sts & MIPICFG_INT_CSI_DMA) -- csi2_isr(&cfe->csi2, sof, eof, lci); -+ csi2_isr(&cfe->csi2, sof, eof); - - if (sts & MIPICFG_INT_PISP_FE) - pisp_fe_isr(&cfe->fe, sof + CSI2_NUM_CHANNELS, -@@ -757,7 +757,7 @@ static irqreturn_t cfe_isr(int irq, void - * generate interrupts even though the node is not streaming. - */ - if (!check_state(cfe, NODE_STREAMING, i) || -- !(sof[i] || eof[i] || lci[i])) -+ !(sof[i] || eof[i])) - continue; - - /* ---- a/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c -+++ b/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c -@@ -258,7 +258,7 @@ static void csi2_isr_handle_errors(struc - spin_unlock(&csi2->errors_lock); - } - --void csi2_isr(struct csi2_device *csi2, bool *sof, bool *eof, bool *lci) -+void csi2_isr(struct csi2_device *csi2, bool *sof, bool *eof) - { - unsigned int i; - u32 status; -@@ -290,7 +290,6 @@ void csi2_isr(struct csi2_device *csi2, - - sof[i] = !!(status & IRQ_FS(i)); - eof[i] = !!(status & IRQ_FE_ACK(i)); -- lci[i] = !!(status & IRQ_LE_ACK(i)); - } - - if (csi2_track_errors) -@@ -405,16 +404,12 @@ void csi2_start_channel(struct csi2_devi - - csi2_dbg("%s [%u]\n", __func__, channel); - -- /* -- * Disable the channel, but ensure N != 0! Otherwise we end up with a -- * spurious LE + LE_ACK interrupt when re-enabling the channel. -- */ -- csi2_reg_write(csi2, CSI2_CH_CTRL(channel), 0x100 << __ffs(LC_MASK)); -+ csi2_reg_write(csi2, CSI2_CH_CTRL(channel), 0); - csi2_reg_write(csi2, CSI2_CH_DEBUG(channel), 0); - csi2_reg_write(csi2, CSI2_STATUS, IRQ_CH_MASK(channel)); - -- /* Enable channel and FS/FE/LE interrupts. */ -- ctrl = DMA_EN | IRQ_EN_FS | IRQ_EN_FE_ACK | IRQ_EN_LE_ACK | PACK_LINE; -+ /* Enable channel and FS/FE interrupts. */ -+ ctrl = DMA_EN | IRQ_EN_FS | IRQ_EN_FE_ACK | PACK_LINE; - /* PACK_BYTES ensures no striding for embedded data. */ - if (pack_bytes) - ctrl |= PACK_BYTES; -@@ -423,21 +418,11 @@ void csi2_start_channel(struct csi2_devi - ctrl |= AUTO_ARM; - - if (width && height) { -- int line_int_freq = height >> 2; -- -- line_int_freq = min(max(0x80, line_int_freq), 0x3ff); -- set_field(&ctrl, line_int_freq, LC_MASK); - set_field(&ctrl, mode, CH_MODE_MASK); - csi2_reg_write(csi2, CSI2_CH_FRAME_SIZE(channel), - (height << 16) | width); - } else { -- /* -- * Do not disable line interrupts for the embedded data channel, -- * set it to the maximum value. This avoids spamming the ISR -- * with spurious line interrupts. -- */ -- set_field(&ctrl, 0x3ff, LC_MASK); -- set_field(&ctrl, 0x00, CH_MODE_MASK); -+ set_field(&ctrl, 0x0, CH_MODE_MASK); - csi2_reg_write(csi2, CSI2_CH_FRAME_SIZE(channel), 0); - } - -@@ -452,8 +437,7 @@ void csi2_stop_channel(struct csi2_devic - csi2_dbg("%s [%u]\n", __func__, channel); - - /* Channel disable. Use FORCE to allow stopping mid-frame. */ -- csi2_reg_write(csi2, CSI2_CH_CTRL(channel), -- (0x100 << __ffs(LC_MASK)) | FORCE); -+ csi2_reg_write(csi2, CSI2_CH_CTRL(channel), FORCE); - /* Latch the above change by writing to the ADDR0 register. */ - csi2_reg_write(csi2, CSI2_CH_ADDR0(channel), 0); - /* Write this again, the HW needs it! */ ---- a/drivers/media/platform/raspberrypi/rp1_cfe/csi2.h -+++ b/drivers/media/platform/raspberrypi/rp1_cfe/csi2.h -@@ -71,7 +71,7 @@ struct csi2_device { - u32 discards_dt_table[DISCARDS_TABLE_NUM_ENTRIES]; - }; - --void csi2_isr(struct csi2_device *csi2, bool *sof, bool *eof, bool *lci); -+void csi2_isr(struct csi2_device *csi2, bool *sof, bool *eof); - void csi2_set_buffer(struct csi2_device *csi2, unsigned int channel, - dma_addr_t dmaaddr, unsigned int stride, - unsigned int size); |