mirror of
https://github.com/tbsdtv/media_build.git
synced 2025-07-23 04:13:02 +02:00
Merge branch 'master' into latest
This commit is contained in:
@@ -28,6 +28,10 @@ add drx39xxj.patch
|
||||
add ccs.patch
|
||||
add rc-cec.patch
|
||||
|
||||
[6.9.1023]
|
||||
add v6.9_i2c_mux.patch
|
||||
add v6.9_assign_str.patch
|
||||
|
||||
[6.8.1023]
|
||||
add v6.8-ccs.patch
|
||||
add v6.8-spi.patch
|
||||
@@ -39,9 +43,6 @@ add v6.7-cec.patch
|
||||
add v6.5_pcm_copy.patch
|
||||
add v6.5_dvb_math.patch
|
||||
|
||||
[6.4.1023]
|
||||
add v6.4_pin_user_pages.patch
|
||||
|
||||
[6.3.1023]
|
||||
add v6.3_class_create.patch
|
||||
add v6.3_check_endpoint.patch
|
||||
@@ -108,7 +109,6 @@ add v5.7_pin_user_pages.patch
|
||||
add v5.7_define_seq_attribute.patch
|
||||
|
||||
[5.6.1023]
|
||||
add v5.6_pin_user_pages.patch
|
||||
add v5.6_const_fb_ops.patch
|
||||
add v5.6_pm_runtime_get_if_active.patch
|
||||
|
||||
|
@@ -1,33 +0,0 @@
|
||||
diff --git a/drivers/media/v4l2-core/videobuf-dma-sg.c b/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
index 234e9f647c96..91f5d9c3a7b7 100644
|
||||
--- a/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
+++ b/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
@@ -179,12 +179,12 @@ static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma,
|
||||
dprintk(1, "init user [0x%lx+0x%lx => %lu pages]\n",
|
||||
data, size, dma->nr_pages);
|
||||
|
||||
- err = pin_user_pages(data & PAGE_MASK, dma->nr_pages, gup_flags,
|
||||
+ err = get_user_pages(data & PAGE_MASK, dma->nr_pages, gup_flags,
|
||||
dma->pages, NULL);
|
||||
|
||||
if (err != dma->nr_pages) {
|
||||
dma->nr_pages = (err >= 0) ? err : 0;
|
||||
- dprintk(1, "pin_user_pages: err=%d [%lu]\n", err,
|
||||
+ dprintk(1, "get_user_pages: err=%d [%lu]\n", err,
|
||||
dma->nr_pages);
|
||||
return err < 0 ? err : -EINVAL;
|
||||
}
|
||||
@@ -345,8 +345,11 @@ int videobuf_dma_free(struct videobuf_dmabuf *dma)
|
||||
BUG_ON(dma->sglen);
|
||||
|
||||
if (dma->pages) {
|
||||
- unpin_user_pages_dirty_lock(dma->pages, dma->nr_pages,
|
||||
- dma->direction == DMA_FROM_DEVICE);
|
||||
+ for (i = 0; i < dma->nr_pages; i++) {
|
||||
+ if (dma->direction == DMA_FROM_DEVICE)
|
||||
+ set_page_dirty_lock(dma->pages[i]);
|
||||
+ put_page(dma->pages[i]);
|
||||
+ }
|
||||
kfree(dma->pages);
|
||||
dma->pages = NULL;
|
||||
}
|
@@ -41,105 +41,3 @@ index 32fa4a7fe76f..f7650cb8361e 100644
|
||||
#include <media/v4l2-ioctl.h>
|
||||
|
||||
#include "bttvp.h"
|
||||
diff --git a/drivers/media/v4l2-core/videobuf-core.c b/drivers/media/v4l2-core/videobuf-core.c
|
||||
index 606a271bdd2d..8a64019170ea 100644
|
||||
--- a/drivers/media/v4l2-core/videobuf-core.c
|
||||
+++ b/drivers/media/v4l2-core/videobuf-core.c
|
||||
@@ -535,7 +535,7 @@ int videobuf_qbuf(struct videobuf_queue *q, struct v4l2_buffer *b)
|
||||
MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS);
|
||||
|
||||
if (b->memory == V4L2_MEMORY_MMAP)
|
||||
- mmap_read_lock(current->mm);
|
||||
+ down_read(¤t->mm->mmap_sem);
|
||||
|
||||
videobuf_queue_lock(q);
|
||||
retval = -EBUSY;
|
||||
@@ -622,7 +622,7 @@ int videobuf_qbuf(struct videobuf_queue *q, struct v4l2_buffer *b)
|
||||
videobuf_queue_unlock(q);
|
||||
|
||||
if (b->memory == V4L2_MEMORY_MMAP)
|
||||
- mmap_read_unlock(current->mm);
|
||||
+ up_read(¤t->mm->mmap_sem);
|
||||
|
||||
return retval;
|
||||
}
|
||||
diff --git a/drivers/media/v4l2-core/videobuf-dma-contig.c b/drivers/media/v4l2-core/videobuf-dma-contig.c
|
||||
index 52312ce2ba05..aeb2f497c683 100644
|
||||
--- a/drivers/media/v4l2-core/videobuf-dma-contig.c
|
||||
+++ b/drivers/media/v4l2-core/videobuf-dma-contig.c
|
||||
@@ -169,7 +169,7 @@ static int videobuf_dma_contig_user_get(struct videobuf_dma_contig_memory *mem,
|
||||
mem->size = PAGE_ALIGN(vb->size + offset);
|
||||
ret = -EINVAL;
|
||||
|
||||
- mmap_read_lock(mm);
|
||||
+ down_read(&mm->mmap_sem);
|
||||
|
||||
vma = find_vma(mm, untagged_baddr);
|
||||
if (!vma)
|
||||
@@ -201,7 +201,7 @@ static int videobuf_dma_contig_user_get(struct videobuf_dma_contig_memory *mem,
|
||||
}
|
||||
|
||||
out_up:
|
||||
- mmap_read_unlock(current->mm);
|
||||
+ up_read(¤t->mm->mmap_sem);
|
||||
|
||||
return ret;
|
||||
}
|
||||
diff --git a/drivers/media/v4l2-core/videobuf-dma-sg.c b/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
index 8dd0562de287..1160b42fcf9c 100644
|
||||
--- a/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
+++ b/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
@@ -21,13 +21,13 @@
|
||||
#include <linux/sched/mm.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/interrupt.h>
|
||||
-#include <linux/pgtable.h>
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/scatterlist.h>
|
||||
#include <asm/page.h>
|
||||
+#include <asm/pgtable.h>
|
||||
|
||||
#include <media/videobuf-dma-sg.h>
|
||||
|
||||
@@ -200,9 +200,9 @@ static int videobuf_dma_init_user(struct videobuf_dmabuf *dma, int direction,
|
||||
{
|
||||
int ret;
|
||||
|
||||
- mmap_read_lock(current->mm);
|
||||
+ down_read(¤t->mm->mmap_sem);
|
||||
ret = videobuf_dma_init_user_locked(dma, direction, data, size);
|
||||
- mmap_read_unlock(current->mm);
|
||||
+ up_read(¤t->mm->mmap_sem);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -535,7 +535,7 @@ static int __videobuf_iolock(struct videobuf_queue *q,
|
||||
} else {
|
||||
/* NOTE: HACK: videobuf_iolock on V4L2_MEMORY_MMAP
|
||||
buffers can only be called from videobuf_qbuf
|
||||
- we take current->mm->mmap_lock there, to prevent
|
||||
+ we take current->mm->mmap_sem there, to prevent
|
||||
locking inversion, so don't take it here */
|
||||
|
||||
err = videobuf_dma_init_user_locked(&mem->dma,
|
||||
diff --git a/drivers/media/v4l2-core/videobuf-vmalloc.c b/drivers/media/v4l2-core/videobuf-vmalloc.c
|
||||
index 9b2443720ab0..f8bd5a369560 100644
|
||||
--- a/drivers/media/v4l2-core/videobuf-vmalloc.c
|
||||
+++ b/drivers/media/v4l2-core/videobuf-vmalloc.c
|
||||
@@ -15,12 +15,12 @@
|
||||
#include <linux/moduleparam.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/interrupt.h>
|
||||
-#include <linux/pgtable.h>
|
||||
|
||||
#include <linux/pci.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <asm/page.h>
|
||||
+#include <asm/pgtable.h>
|
||||
|
||||
#include <media/videobuf-vmalloc.h>
|
||||
|
||||
|
@@ -134,47 +134,6 @@ index 049c2f2001ea..3d9533c1b202 100644
|
||||
v4l2_async_nf_cleanup(notifier);
|
||||
kfree(notifier);
|
||||
|
||||
diff --git a/drivers/media/v4l2-core/videobuf-dma-contig.c b/drivers/media/v4l2-core/videobuf-dma-contig.c
|
||||
index 4c2ec7a0d804..f2c439359557 100644
|
||||
--- a/drivers/media/v4l2-core/videobuf-dma-contig.c
|
||||
+++ b/drivers/media/v4l2-core/videobuf-dma-contig.c
|
||||
@@ -314,7 +314,7 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
||||
}
|
||||
|
||||
vma->vm_ops = &videobuf_vm_ops;
|
||||
- vm_flags_set(vma, VM_DONTEXPAND);
|
||||
+ vma->vm_flags |= VM_DONTEXPAND;
|
||||
vma->vm_private_data = map;
|
||||
|
||||
dev_dbg(q->dev, "mmap %p: q=%p %08lx-%08lx (%lx) pgoff %08lx buf %d\n",
|
||||
diff --git a/drivers/media/v4l2-core/videobuf-dma-sg.c b/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
index 53001532e8e3..234e9f647c96 100644
|
||||
--- a/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
+++ b/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
@@ -630,8 +630,8 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
||||
map->count = 1;
|
||||
map->q = q;
|
||||
vma->vm_ops = &videobuf_vm_ops;
|
||||
- /* using shared anonymous pages */
|
||||
- vm_flags_mod(vma, VM_DONTEXPAND | VM_DONTDUMP, VM_IO);
|
||||
+ vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
|
||||
+ vma->vm_flags &= ~VM_IO; /* using shared anonymous pages */
|
||||
vma->vm_private_data = map;
|
||||
dprintk(1, "mmap %p: q=%p %08lx-%08lx pgoff %08lx bufs %d-%d\n",
|
||||
map, q, vma->vm_start, vma->vm_end, vma->vm_pgoff, first, last);
|
||||
diff --git a/drivers/media/v4l2-core/videobuf-vmalloc.c b/drivers/media/v4l2-core/videobuf-vmalloc.c
|
||||
index 85c7090606d6..9b2443720ab0 100644
|
||||
--- a/drivers/media/v4l2-core/videobuf-vmalloc.c
|
||||
+++ b/drivers/media/v4l2-core/videobuf-vmalloc.c
|
||||
@@ -247,7 +247,7 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
||||
}
|
||||
|
||||
vma->vm_ops = &videobuf_vm_ops;
|
||||
- vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
|
||||
+ vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
|
||||
vma->vm_private_data = map;
|
||||
|
||||
dprintk(1, "mmap %p: q=%p %08lx-%08lx (%lx) pgoff %08lx buf %d\n",
|
||||
diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
|
||||
index 205d3cac425c..d14e13385385 100644
|
||||
--- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c
|
||||
|
@@ -1,13 +0,0 @@
|
||||
diff --git a/drivers/media/v4l2-core/videobuf-dma-sg.c b/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
index 405b89ea1054..53001532e8e3 100644
|
||||
--- a/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
+++ b/drivers/media/v4l2-core/videobuf-dma-sg.c
|
||||
@@ -180,7 +180,7 @@ static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma,
|
||||
data, size, dma->nr_pages);
|
||||
|
||||
err = pin_user_pages(data & PAGE_MASK, dma->nr_pages, gup_flags,
|
||||
- dma->pages);
|
||||
+ dma->pages, NULL);
|
||||
|
||||
if (err != dma->nr_pages) {
|
||||
dma->nr_pages = (err >= 0) ? err : 0;
|
22
backports/v6.9_assign_str.patch
Normal file
22
backports/v6.9_assign_str.patch
Normal file
@@ -0,0 +1,22 @@
|
||||
diff --git a/include/trace/events/pwc.h b/include/trace/events/pwc.h
|
||||
index 0543702542d9..a2da764a3b41 100644
|
||||
--- a/include/trace/events/pwc.h
|
||||
+++ b/include/trace/events/pwc.h
|
||||
@@ -26,7 +26,7 @@ TRACE_EVENT(pwc_handler_enter,
|
||||
__entry->urb__actual_length = urb->actual_length;
|
||||
__entry->fbuf__filled = (pdev->fill_buf
|
||||
? pdev->fill_buf->filled : 0);
|
||||
- __assign_str(name);
|
||||
+ __assign_str(name, pdev->v4l2_dev.name);
|
||||
),
|
||||
TP_printk("dev=%s (fbuf=%p filled=%d) urb=%p (status=%d actual_length=%u)",
|
||||
__get_str(name),
|
||||
@@ -50,7 +50,7 @@ TRACE_EVENT(pwc_handler_exit,
|
||||
__entry->urb = urb;
|
||||
__entry->fbuf = pdev->fill_buf;
|
||||
__entry->fbuf__filled = pdev->fill_buf->filled;
|
||||
- __assign_str(name);
|
||||
+ __assign_str(name, pdev->v4l2_dev.name);
|
||||
),
|
||||
TP_printk(" dev=%s (fbuf=%p filled=%d) urb=%p",
|
||||
__get_str(name),
|
104
backports/v6.9_i2c_mux.patch
Normal file
104
backports/v6.9_i2c_mux.patch
Normal file
@@ -0,0 +1,104 @@
|
||||
diff --git a/drivers/media/dvb-frontends/af9013.c b/drivers/media/dvb-frontends/af9013.c
|
||||
index 5afdbe244596..a829c89792a4 100644
|
||||
--- a/drivers/media/dvb-frontends/af9013.c
|
||||
+++ b/drivers/media/dvb-frontends/af9013.c
|
||||
@@ -1480,7 +1480,7 @@ static int af9013_probe(struct i2c_client *client)
|
||||
goto err_regmap_exit;
|
||||
}
|
||||
state->muxc->priv = state;
|
||||
- ret = i2c_mux_add_adapter(state->muxc, 0, 0);
|
||||
+ ret = i2c_mux_add_adapter(state->muxc, 0, 0, 0);
|
||||
if (ret)
|
||||
goto err_regmap_exit;
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c
|
||||
index a1cb424527cc..2d7750649850 100644
|
||||
--- a/drivers/media/dvb-frontends/lgdt3306a.c
|
||||
+++ b/drivers/media/dvb-frontends/lgdt3306a.c
|
||||
@@ -2203,7 +2203,7 @@ static int lgdt3306a_probe(struct i2c_client *client)
|
||||
goto err_kfree;
|
||||
}
|
||||
state->muxc->priv = client;
|
||||
- ret = i2c_mux_add_adapter(state->muxc, 0, 0);
|
||||
+ ret = i2c_mux_add_adapter(state->muxc, 0, 0, 0);
|
||||
if (ret)
|
||||
goto err_kfree;
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
|
||||
index fae55c4563ff..cf037b61b226 100644
|
||||
--- a/drivers/media/dvb-frontends/m88ds3103.c
|
||||
+++ b/drivers/media/dvb-frontends/m88ds3103.c
|
||||
@@ -1866,7 +1866,7 @@ static int m88ds3103_probe(struct i2c_client *client)
|
||||
goto err_kfree;
|
||||
}
|
||||
dev->muxc->priv = dev;
|
||||
- ret = i2c_mux_add_adapter(dev->muxc, 0, 0);
|
||||
+ ret = i2c_mux_add_adapter(dev->muxc, 0, 0, 0);
|
||||
if (ret)
|
||||
goto err_kfree;
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/rtl2830.c b/drivers/media/dvb-frontends/rtl2830.c
|
||||
index 30d10fe4b33e..35c969fd2cb5 100644
|
||||
--- a/drivers/media/dvb-frontends/rtl2830.c
|
||||
+++ b/drivers/media/dvb-frontends/rtl2830.c
|
||||
@@ -838,7 +838,7 @@ static int rtl2830_probe(struct i2c_client *client)
|
||||
goto err_regmap_exit;
|
||||
}
|
||||
dev->muxc->priv = client;
|
||||
- ret = i2c_mux_add_adapter(dev->muxc, 0, 0);
|
||||
+ ret = i2c_mux_add_adapter(dev->muxc, 0, 0, 0);
|
||||
if (ret)
|
||||
goto err_regmap_exit;
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/rtl2832.c b/drivers/media/dvb-frontends/rtl2832.c
|
||||
index 5142820b1b3d..601cf45c3935 100644
|
||||
--- a/drivers/media/dvb-frontends/rtl2832.c
|
||||
+++ b/drivers/media/dvb-frontends/rtl2832.c
|
||||
@@ -1082,7 +1082,7 @@ static int rtl2832_probe(struct i2c_client *client)
|
||||
goto err_regmap_exit;
|
||||
}
|
||||
dev->muxc->priv = dev;
|
||||
- ret = i2c_mux_add_adapter(dev->muxc, 0, 0);
|
||||
+ ret = i2c_mux_add_adapter(dev->muxc, 0, 0, 0);
|
||||
if (ret)
|
||||
goto err_regmap_exit;
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
|
||||
index 26828fd41e68..dae1f2153e8b 100644
|
||||
--- a/drivers/media/dvb-frontends/si2168.c
|
||||
+++ b/drivers/media/dvb-frontends/si2168.c
|
||||
@@ -744,7 +744,7 @@ static int si2168_probe(struct i2c_client *client)
|
||||
goto err_kfree;
|
||||
}
|
||||
dev->muxc->priv = client;
|
||||
- ret = i2c_mux_add_adapter(dev->muxc, 0, 0);
|
||||
+ ret = i2c_mux_add_adapter(dev->muxc, 0, 0, 0);
|
||||
if (ret)
|
||||
goto err_kfree;
|
||||
|
||||
diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
|
||||
index bf591bf5da25..88c58e0c49aa 100644
|
||||
--- a/drivers/media/i2c/max9286.c
|
||||
+++ b/drivers/media/i2c/max9286.c
|
||||
@@ -382,7 +382,7 @@ static int max9286_i2c_mux_init(struct max9286_priv *priv)
|
||||
for_each_source(priv, source) {
|
||||
unsigned int index = to_index(priv, source);
|
||||
|
||||
- ret = i2c_mux_add_adapter(priv->mux, 0, index);
|
||||
+ ret = i2c_mux_add_adapter(priv->mux, 0, index, 0);
|
||||
if (ret < 0)
|
||||
goto error;
|
||||
}
|
||||
diff --git a/drivers/media/usb/cx231xx/cx231xx-i2c.c b/drivers/media/usb/cx231xx/cx231xx-i2c.c
|
||||
index 6da8e7943d94..78a75fbd3a53 100644
|
||||
--- a/drivers/media/usb/cx231xx/cx231xx-i2c.c
|
||||
+++ b/drivers/media/usb/cx231xx/cx231xx-i2c.c
|
||||
@@ -567,7 +567,7 @@ int cx231xx_i2c_mux_create(struct cx231xx *dev)
|
||||
|
||||
int cx231xx_i2c_mux_register(struct cx231xx *dev, int mux_no)
|
||||
{
|
||||
- return i2c_mux_add_adapter(dev->muxc, 0, mux_no);
|
||||
+ return i2c_mux_add_adapter(dev->muxc, 0, mux_no, 0);
|
||||
}
|
||||
|
||||
void cx231xx_i2c_mux_unregister(struct cx231xx *dev)
|
Reference in New Issue
Block a user