mirror of
https://github.com/openwrt/openwrt.git
synced 2025-03-24 04:55:40 +00:00
bcm27xx: update 6.1 patches from RPi foundation
Sync 6.1 patches with the RPi foundation. Since rpi-6.6.y is now the main branch of the RPi foundation, there won't be any new patches for linux 6.1. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
parent
8cf4ac5195
commit
20fe7e687e
@ -169,6 +169,7 @@ CONFIG_FW_CACHE=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
@ -229,6 +230,7 @@ CONFIG_LOGO_LINUX_CLUT224=y
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1f6
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MDIO_BUS=y
|
||||
@ -290,6 +292,7 @@ CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLIB_LEDS=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_BCM2835=y
|
||||
CONFIG_PM=y
|
||||
|
@ -206,6 +206,7 @@ CONFIG_FW_CACHE=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
@ -287,6 +288,7 @@ CONFIG_LOGO_LINUX_CLUT224=y
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1f6
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MDIO_BCM_UNIMAC=y
|
||||
@ -367,6 +369,7 @@ CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLIB_LEDS=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_BCM2835=y
|
||||
|
@ -213,6 +213,7 @@ CONFIG_FW_CACHE=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
|
||||
CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
@ -286,6 +287,7 @@ CONFIG_LOGO_LINUX_CLUT224=y
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1f6
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MDIO_BUS=y
|
||||
@ -358,6 +360,7 @@ CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLIB_LEDS=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_BCM2835=y
|
||||
|
@ -213,6 +213,7 @@ CONFIG_FW_CACHE=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
|
||||
CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
@ -287,6 +288,7 @@ CONFIG_LOGO_LINUX_CLUT224=y
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1f6
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MDIO_BCM_UNIMAC=y
|
||||
@ -362,6 +364,7 @@ CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLIB_LEDS=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_BCM2835=y
|
||||
|
@ -256,6 +256,7 @@ CONFIG_FW_CACHE=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
|
||||
CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
@ -360,6 +361,7 @@ CONFIG_MACB_PCI=y
|
||||
CONFIG_MACB_USE_HWSTAMP=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1f6
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MDIO_BCM_UNIMAC=y
|
||||
@ -460,6 +462,7 @@ CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PCI_STUB=y
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLIB_LEDS=y
|
||||
CONFIG_PHYLINK=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
# CONFIG_PHY_BRCM_SATA is not set
|
||||
|
@ -1,64 +0,0 @@
|
||||
From 12c7ea43b930976f35ce75d11fd3f55438868e13 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Fri, 4 Aug 2023 11:26:10 +0100
|
||||
Subject: [PATCH] drm/v3d: Improve MMU support for larger pages
|
||||
|
||||
The built-in MMU driver went most of the way towards supporting larger
|
||||
kernel pages, but dropped the ball when it comes to calculating indexes
|
||||
into the page table. Fix it.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
drivers/gpu/drm/v3d/v3d_mmu.c | 15 ++++++++-------
|
||||
1 file changed, 8 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/v3d/v3d_mmu.c
|
||||
+++ b/drivers/gpu/drm/v3d/v3d_mmu.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "v3d_regs.h"
|
||||
|
||||
#define V3D_MMU_PAGE_SHIFT 12
|
||||
+#define V3D_PAGE_FACTOR (PAGE_SIZE >> V3D_MMU_PAGE_SHIFT)
|
||||
|
||||
/* Note: All PTEs for the 1MB superpage must be filled with the
|
||||
* superpage bit set.
|
||||
@@ -88,7 +89,7 @@ void v3d_mmu_insert_ptes(struct v3d_bo *
|
||||
{
|
||||
struct drm_gem_shmem_object *shmem_obj = &bo->base;
|
||||
struct v3d_dev *v3d = to_v3d_dev(shmem_obj->base.dev);
|
||||
- u32 page = bo->node.start;
|
||||
+ u32 page = bo->node.start * V3D_PAGE_FACTOR;
|
||||
u32 page_prot = V3D_PTE_WRITEABLE | V3D_PTE_VALID;
|
||||
struct sg_dma_page_iter dma_iter;
|
||||
|
||||
@@ -98,13 +99,13 @@ void v3d_mmu_insert_ptes(struct v3d_bo *
|
||||
u32 pte = page_prot | page_address;
|
||||
u32 i;
|
||||
|
||||
- BUG_ON(page_address + (PAGE_SIZE >> V3D_MMU_PAGE_SHIFT) >=
|
||||
+ BUG_ON(page_address + V3D_PAGE_FACTOR >=
|
||||
BIT(24));
|
||||
- for (i = 0; i < PAGE_SIZE >> V3D_MMU_PAGE_SHIFT; i++)
|
||||
+ for (i = 0; i < V3D_PAGE_FACTOR; i++)
|
||||
v3d->pt[page++] = pte + i;
|
||||
}
|
||||
|
||||
- WARN_ON_ONCE(page - bo->node.start !=
|
||||
+ WARN_ON_ONCE(page - (bo->node.start * V3D_PAGE_FACTOR) !=
|
||||
shmem_obj->base.size >> V3D_MMU_PAGE_SHIFT);
|
||||
|
||||
if (v3d_mmu_flush_all(v3d))
|
||||
@@ -115,10 +116,10 @@ void v3d_mmu_remove_ptes(struct v3d_bo *
|
||||
{
|
||||
struct v3d_dev *v3d = to_v3d_dev(bo->base.base.dev);
|
||||
u32 npages = bo->base.base.size >> V3D_MMU_PAGE_SHIFT;
|
||||
- u32 page;
|
||||
+ u32 page = bo->node.start * V3D_PAGE_FACTOR;
|
||||
|
||||
- for (page = bo->node.start; page < bo->node.start + npages; page++)
|
||||
- v3d->pt[page] = 0;
|
||||
+ while (npages--)
|
||||
+ v3d->pt[page++] = 0;
|
||||
|
||||
if (v3d_mmu_flush_all(v3d))
|
||||
dev_err(v3d->drm.dev, "MMU flush timeout\n");
|
@ -1,57 +0,0 @@
|
||||
From 0a09088e24c013ef608b1bb79501ef890cefc767 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Tue, 19 Dec 2023 11:16:25 +0000
|
||||
Subject: [PATCH] i2c: designware: Look for *CNT values in DT
|
||||
|
||||
The i2c-designware driver supports reading precise timing values from
|
||||
ACPI, but the Device Tree support relies on a combination of standard
|
||||
rise and fall times and hard-coded minimum timings. The result of this
|
||||
is that it is difficult to get optimum timings, particularly given that
|
||||
the values are bus speed-specific and only one set can be stored in
|
||||
DT at a time.
|
||||
|
||||
Add support for initialisation from DT that is similar to that for
|
||||
ACPI.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
drivers/i2c/busses/i2c-designware-platdrv.c | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
|
||||
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
|
||||
@@ -132,9 +132,18 @@ static int mscc_twi_set_sda_hold_time(st
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static void dw_i2c_read_of_cnt(struct device_node *np, const char *name, u16 *pval)
|
||||
+{
|
||||
+ u32 val;
|
||||
+
|
||||
+ if (!of_property_read_u32(np, name, &val))
|
||||
+ *pval = (u16)val;
|
||||
+}
|
||||
+
|
||||
static int dw_i2c_of_configure(struct platform_device *pdev)
|
||||
{
|
||||
struct dw_i2c_dev *dev = platform_get_drvdata(pdev);
|
||||
+ struct device_node *np = pdev->dev.of_node;
|
||||
|
||||
switch (dev->flags & MODEL_MASK) {
|
||||
case MODEL_MSCC_OCELOT:
|
||||
@@ -146,6 +155,15 @@ static int dw_i2c_of_configure(struct pl
|
||||
break;
|
||||
}
|
||||
|
||||
+ dw_i2c_read_of_cnt(np, "snps,ss_hcnt", &dev->ss_hcnt);
|
||||
+ dw_i2c_read_of_cnt(np, "snps,ss_lcnt", &dev->ss_lcnt);
|
||||
+ dw_i2c_read_of_cnt(np, "snps,fs_hcnt", &dev->fs_hcnt);
|
||||
+ dw_i2c_read_of_cnt(np, "snps,fs_lcnt", &dev->fs_lcnt);
|
||||
+ dw_i2c_read_of_cnt(np, "snps,fp_hcnt", &dev->fp_hcnt);
|
||||
+ dw_i2c_read_of_cnt(np, "snps,fp_lcnt", &dev->fp_lcnt);
|
||||
+ dw_i2c_read_of_cnt(np, "snps,hs_hcnt", &dev->hs_hcnt);
|
||||
+ dw_i2c_read_of_cnt(np, "snps,hs_lcnt", &dev->hs_lcnt);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,103 +0,0 @@
|
||||
From 660d569b1a623e4b64350e608bbf8bc2cc6332e9 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Tue, 19 Dec 2023 11:27:20 +0000
|
||||
Subject: [PATCH] dts: rp1: Add I2C timings
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
arch/arm/boot/dts/rp1.dtsi | 42 ++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 42 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/rp1.dtsi
|
||||
+++ b/arch/arm/boot/dts/rp1.dtsi
|
||||
@@ -305,6 +305,12 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ snps,ss_hcnt = <978>;
|
||||
+ snps,ss_lcnt = <990>;
|
||||
+ snps,fs_hcnt = <200>;
|
||||
+ snps,fs_lcnt = <268>;
|
||||
+ snps,fp_hcnt = <60>;
|
||||
+ snps,fp_lcnt = <107>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -313,6 +319,12 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C1 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ snps,ss_hcnt = <978>;
|
||||
+ snps,ss_lcnt = <990>;
|
||||
+ snps,fs_hcnt = <200>;
|
||||
+ snps,fs_lcnt = <268>;
|
||||
+ snps,fp_hcnt = <60>;
|
||||
+ snps,fp_lcnt = <107>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -321,6 +333,12 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ snps,ss_hcnt = <978>;
|
||||
+ snps,ss_lcnt = <990>;
|
||||
+ snps,fs_hcnt = <200>;
|
||||
+ snps,fs_lcnt = <268>;
|
||||
+ snps,fp_hcnt = <60>;
|
||||
+ snps,fp_lcnt = <107>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -329,6 +347,12 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C3 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ snps,ss_hcnt = <978>;
|
||||
+ snps,ss_lcnt = <990>;
|
||||
+ snps,fs_hcnt = <200>;
|
||||
+ snps,fs_lcnt = <268>;
|
||||
+ snps,fp_hcnt = <60>;
|
||||
+ snps,fp_lcnt = <107>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -337,6 +361,12 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C4 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ snps,ss_hcnt = <978>;
|
||||
+ snps,ss_lcnt = <990>;
|
||||
+ snps,fs_hcnt = <200>;
|
||||
+ snps,fs_lcnt = <268>;
|
||||
+ snps,fp_hcnt = <60>;
|
||||
+ snps,fp_lcnt = <107>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -345,6 +375,12 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ snps,ss_hcnt = <978>;
|
||||
+ snps,ss_lcnt = <990>;
|
||||
+ snps,fs_hcnt = <200>;
|
||||
+ snps,fs_lcnt = <268>;
|
||||
+ snps,fp_hcnt = <60>;
|
||||
+ snps,fp_lcnt = <107>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -353,6 +389,12 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C6 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ snps,ss_hcnt = <978>;
|
||||
+ snps,ss_lcnt = <990>;
|
||||
+ snps,fs_hcnt = <200>;
|
||||
+ snps,fs_lcnt = <268>;
|
||||
+ snps,fp_hcnt = <60>;
|
||||
+ snps,fp_lcnt = <107>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -0,0 +1,45 @@
|
||||
From d8e53e0b83c947123c38c81d2fb5162c86d26fb5 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Thu, 4 Jan 2024 12:39:33 +0000
|
||||
Subject: [PATCH 1247/1295] drm/vc4: Optimise vc4_hvs_dlist_free_work to only
|
||||
read frcnt and active once
|
||||
|
||||
vc4_hvs_dlist_free_work was iterating through the list of stale
|
||||
dlist entries and reading the frame count and active flags from
|
||||
the hardware for each one.
|
||||
|
||||
Read the frame count and active flags once, and then use the
|
||||
cached value in the loop.
|
||||
|
||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_hvs.c | 15 ++++++++++-----
|
||||
1 file changed, 10 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
|
||||
@@ -796,14 +796,19 @@ static void vc4_hvs_dlist_free_work(stru
|
||||
struct vc4_hvs *hvs = container_of(work, struct vc4_hvs, free_dlist_work);
|
||||
struct vc4_hvs_dlist_allocation *cur, *next;
|
||||
unsigned long flags;
|
||||
+ bool active[3];
|
||||
+ u8 frcnt[3];
|
||||
+ int i;
|
||||
+
|
||||
|
||||
spin_lock_irqsave(&hvs->mm_lock, flags);
|
||||
+ for (i = 0; i < 3; i++) {
|
||||
+ frcnt[i] = vc4_hvs_get_fifo_frame_count(hvs, i);
|
||||
+ active[i] = vc4_hvs_check_channel_active(hvs, i);
|
||||
+ }
|
||||
list_for_each_entry_safe(cur, next, &hvs->stale_dlist_entries, node) {
|
||||
- u8 frcnt;
|
||||
-
|
||||
- frcnt = vc4_hvs_get_fifo_frame_count(hvs, cur->channel);
|
||||
- if (vc4_hvs_check_channel_active(hvs, cur->channel) &&
|
||||
- !vc4_hvs_frcnt_lte(cur->target_frame_count, frcnt))
|
||||
+ if (active[cur->channel] &&
|
||||
+ !vc4_hvs_frcnt_lte(cur->target_frame_count, frcnt[cur->channel]))
|
||||
continue;
|
||||
|
||||
vc4_hvs_free_dlist_entry_locked(hvs, cur);
|
@ -0,0 +1,69 @@
|
||||
From c0d4ab94e37991db311b0d4e955a349e359fc73a Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Wed, 17 Jan 2024 18:36:11 +0000
|
||||
Subject: [PATCH 1248/1295] drm/vc4: Flush stale dlist entries if allocation
|
||||
fails
|
||||
|
||||
This is largely for debug at present.
|
||||
For reasons unknown we are not getting the end of frame interrupts
|
||||
that should trigger a sweep of stale dlist entries.
|
||||
|
||||
On allocation failure clear out ALL stale entries, and retry the
|
||||
allocation. Log the interrupt status so we have debug regarding
|
||||
whether the HVS believes the interrupt is enabled.
|
||||
|
||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_hvs.c | 27 ++++++++++++++++++++++++---
|
||||
1 file changed, 24 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
|
||||
@@ -634,6 +634,9 @@ static void vc4_hvs_irq_clear_eof(struct
|
||||
hvs->eof_irq[channel].enabled = false;
|
||||
}
|
||||
|
||||
+static void vc4_hvs_free_dlist_entry_locked(struct vc4_hvs *hvs,
|
||||
+ struct vc4_hvs_dlist_allocation *alloc);
|
||||
+
|
||||
static struct vc4_hvs_dlist_allocation *
|
||||
vc4_hvs_alloc_dlist_entry(struct vc4_hvs *hvs,
|
||||
unsigned int channel,
|
||||
@@ -642,6 +645,7 @@ vc4_hvs_alloc_dlist_entry(struct vc4_hvs
|
||||
struct vc4_dev *vc4 = hvs->vc4;
|
||||
struct drm_device *dev = &vc4->base;
|
||||
struct vc4_hvs_dlist_allocation *alloc;
|
||||
+ struct vc4_hvs_dlist_allocation *cur, *next;
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
@@ -659,9 +663,26 @@ vc4_hvs_alloc_dlist_entry(struct vc4_hvs
|
||||
dlist_count);
|
||||
spin_unlock_irqrestore(&hvs->mm_lock, flags);
|
||||
if (ret) {
|
||||
- drm_err(dev, "Failed to allocate DLIST entry. Requested size=%zu. ret=%d\n",
|
||||
- dlist_count, ret);
|
||||
- return ERR_PTR(ret);
|
||||
+ drm_err(dev, "Failed to allocate DLIST entry. Requested size=%zu. ret=%d. DISPCTRL is %08x\n",
|
||||
+ dlist_count, ret, HVS_READ(SCALER_DISPCTRL));
|
||||
+
|
||||
+ /* This should never happen as stale entries should get released
|
||||
+ * as the frame counter interrupt triggers.
|
||||
+ * However we've seen this fail for reasons currently unknown.
|
||||
+ * Free all stale entries now so we should be able to complete
|
||||
+ * this allocation.
|
||||
+ */
|
||||
+ spin_lock_irqsave(&hvs->mm_lock, flags);
|
||||
+ list_for_each_entry_safe(cur, next, &hvs->stale_dlist_entries, node) {
|
||||
+ vc4_hvs_free_dlist_entry_locked(hvs, cur);
|
||||
+ }
|
||||
+
|
||||
+ ret = drm_mm_insert_node(&hvs->dlist_mm, &alloc->mm_node,
|
||||
+ dlist_count);
|
||||
+ spin_unlock_irqrestore(&hvs->mm_lock, flags);
|
||||
+
|
||||
+ if (ret)
|
||||
+ return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
alloc->channel = channel;
|
@ -0,0 +1,55 @@
|
||||
From cd62562b276b5724d1c75ea1465937a5bd9037db Mon Sep 17 00:00:00 2001
|
||||
From: Giedrius <giedrius@blokas.io>
|
||||
Date: Fri, 19 Jan 2024 10:55:55 +0000
|
||||
Subject: [PATCH 1249/1295] Pisound: Don't export the button GPIO via sysfs
|
||||
GPIO class.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Giedrius Trainavičius <giedrius@blokas.io>
|
||||
---
|
||||
sound/soc/bcm/pisound.c | 9 +--------
|
||||
1 file changed, 1 insertion(+), 8 deletions(-)
|
||||
|
||||
--- a/sound/soc/bcm/pisound.c
|
||||
+++ b/sound/soc/bcm/pisound.c
|
||||
@@ -857,7 +857,6 @@ static int pisnd_ctl_uninit(void)
|
||||
|
||||
static struct gpio_desc *osr0, *osr1, *osr2;
|
||||
static struct gpio_desc *reset;
|
||||
-static struct gpio_desc *button;
|
||||
|
||||
static int pisnd_hw_params(
|
||||
struct snd_pcm_substream *substream,
|
||||
@@ -1016,8 +1015,6 @@ static int pisnd_init_gpio(struct device
|
||||
|
||||
reset = gpiod_get_index(dev, "reset", 0, GPIOD_ASIS);
|
||||
|
||||
- button = gpiod_get_index(dev, "button", 0, GPIOD_ASIS);
|
||||
-
|
||||
gpiod_direction_output(osr0, 1);
|
||||
gpiod_direction_output(osr1, 1);
|
||||
gpiod_direction_output(osr2, 1);
|
||||
@@ -1029,8 +1026,6 @@ static int pisnd_init_gpio(struct device
|
||||
gpiod_set_value(osr2, false);
|
||||
gpiod_set_value(reset, true);
|
||||
|
||||
- gpiod_export(button, false);
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1039,11 +1034,9 @@ static int pisnd_uninit_gpio(void)
|
||||
int i;
|
||||
|
||||
struct gpio_desc **gpios[] = {
|
||||
- &osr0, &osr1, &osr2, &reset, &button,
|
||||
+ &osr0, &osr1, &osr2, &reset,
|
||||
};
|
||||
|
||||
- gpiod_unexport(button);
|
||||
-
|
||||
for (i = 0; i < ARRAY_SIZE(gpios); ++i) {
|
||||
if (*gpios[i] == NULL) {
|
||||
printd("weird, GPIO[%d] is NULL already\n", i);
|
@ -0,0 +1,94 @@
|
||||
From 273139b285f7a1a825eb689943626a0172b8802b Mon Sep 17 00:00:00 2001
|
||||
From: Giedrius <giedrius@blokas.io>
|
||||
Date: Mon, 22 Jan 2024 13:26:58 +0000
|
||||
Subject: [PATCH 1250/1295] Pisound: Read out the SPI speed to use from the
|
||||
Device Tree.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Giedrius Trainavičius <giedrius@blokas.io>
|
||||
---
|
||||
sound/soc/bcm/pisound.c | 31 ++++++++++++++++++++++++++-----
|
||||
1 file changed, 26 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/sound/soc/bcm/pisound.c
|
||||
+++ b/sound/soc/bcm/pisound.c
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Pisound Linux kernel module.
|
||||
- * Copyright (C) 2016-2020 Vilniaus Blokas UAB, https://blokas.io/pisound
|
||||
+ * Copyright (C) 2016-2024 Vilniaus Blokas UAB, https://blokas.io/pisound
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -142,14 +142,14 @@ static void pisnd_input_trigger(struct s
|
||||
}
|
||||
}
|
||||
|
||||
-static struct snd_rawmidi_ops pisnd_output_ops = {
|
||||
+static const struct snd_rawmidi_ops pisnd_output_ops = {
|
||||
.open = pisnd_output_open,
|
||||
.close = pisnd_output_close,
|
||||
.trigger = pisnd_output_trigger,
|
||||
.drain = pisnd_output_drain,
|
||||
};
|
||||
|
||||
-static struct snd_rawmidi_ops pisnd_input_ops = {
|
||||
+static const struct snd_rawmidi_ops pisnd_input_ops = {
|
||||
.open = pisnd_input_open,
|
||||
.close = pisnd_input_close,
|
||||
.trigger = pisnd_input_trigger,
|
||||
@@ -226,6 +226,7 @@ static char g_id[25];
|
||||
enum { MAX_VERSION_STR_LEN = 6 };
|
||||
static char g_fw_version[MAX_VERSION_STR_LEN];
|
||||
static char g_hw_version[MAX_VERSION_STR_LEN];
|
||||
+static u32 g_spi_speed_hz;
|
||||
|
||||
static uint8_t g_ledFlashDuration;
|
||||
static bool g_ledFlashDurationChanged;
|
||||
@@ -329,7 +330,7 @@ static void spi_transfer(const uint8_t *
|
||||
transfer.tx_buf = txbuf;
|
||||
transfer.rx_buf = rxbuf;
|
||||
transfer.len = len;
|
||||
- transfer.speed_hz = 150000;
|
||||
+ transfer.speed_hz = g_spi_speed_hz;
|
||||
transfer.delay.value = 10;
|
||||
transfer.delay.unit = SPI_DELAY_UNIT_USECS;
|
||||
|
||||
@@ -646,6 +647,26 @@ static int pisnd_spi_init(struct device
|
||||
memset(g_fw_version, 0, sizeof(g_fw_version));
|
||||
memset(g_hw_version, 0, sizeof(g_hw_version));
|
||||
|
||||
+ g_spi_speed_hz = 150000;
|
||||
+ if (dev->of_node) {
|
||||
+ struct device_node *spi_node;
|
||||
+
|
||||
+ spi_node = of_parse_phandle(
|
||||
+ dev->of_node,
|
||||
+ "spi-controller",
|
||||
+ 0
|
||||
+ );
|
||||
+
|
||||
+ if (spi_node) {
|
||||
+ ret = of_property_read_u32(spi_node, "spi-speed-hz", &g_spi_speed_hz);
|
||||
+ if (ret != 0)
|
||||
+ printe("Failed reading spi-speed-hz! (%d)\n", ret);
|
||||
+
|
||||
+ of_node_put(spi_node);
|
||||
+ }
|
||||
+ }
|
||||
+ printi("Using SPI speed: %u\n", g_spi_speed_hz);
|
||||
+
|
||||
spi = pisnd_spi_find_device();
|
||||
|
||||
if (spi != NULL) {
|
||||
@@ -950,7 +971,7 @@ static int pisnd_startup(struct snd_pcm_
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static struct snd_soc_ops pisnd_ops = {
|
||||
+static const struct snd_soc_ops pisnd_ops = {
|
||||
.startup = pisnd_startup,
|
||||
.hw_params = pisnd_hw_params,
|
||||
};
|
@ -0,0 +1,129 @@
|
||||
From 92123f0abd5e24c150b54c56261813ced432ac87 Mon Sep 17 00:00:00 2001
|
||||
From: Giedrius <giedrius@blokas.io>
|
||||
Date: Mon, 22 Jan 2024 13:29:24 +0000
|
||||
Subject: [PATCH 1251/1295] Pisound: Set the spi-speed-hz for Pisound in the
|
||||
Device Tree overlay, and specify spi-speed-hz override for Pi 5.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Giedrius Trainavičius <giedrius@blokas.io>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/Makefile | 1 +
|
||||
arch/arm/boot/dts/overlays/README | 8 ++++-
|
||||
arch/arm/boot/dts/overlays/overlay_map.dts | 10 ++++++
|
||||
.../arm/boot/dts/overlays/pisound-overlay.dts | 4 ++-
|
||||
.../boot/dts/overlays/pisound-pi5-overlay.dts | 31 +++++++++++++++++++
|
||||
5 files changed, 52 insertions(+), 2 deletions(-)
|
||||
create mode 100644 arch/arm/boot/dts/overlays/pisound-pi5-overlay.dts
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/Makefile
|
||||
+++ b/arch/arm/boot/dts/overlays/Makefile
|
||||
@@ -192,6 +192,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
piscreen.dtbo \
|
||||
piscreen2r.dtbo \
|
||||
pisound.dtbo \
|
||||
+ pisound-pi5.dtbo \
|
||||
pitft22.dtbo \
|
||||
pitft28-capacitive.dtbo \
|
||||
pitft28-resistive.dtbo \
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -3486,11 +3486,17 @@ Params: speed Display
|
||||
|
||||
|
||||
Name: pisound
|
||||
-Info: Configures the Blokas Labs pisound card
|
||||
+Info: Configures the Blokas Labs Pisound card
|
||||
Load: dtoverlay=pisound
|
||||
Params: <None>
|
||||
|
||||
|
||||
+Name: pisound-pi5
|
||||
+Info: Pi 5 specific overlay override for Blokas Labs Pisound card, see pisound
|
||||
+Load: dtoverlay=pisound-pi5
|
||||
+Params: <None>
|
||||
+
|
||||
+
|
||||
Name: pitft22
|
||||
Info: Adafruit PiTFT 2.2" screen
|
||||
Load: dtoverlay=pitft22,<param>=<val>
|
||||
--- a/arch/arm/boot/dts/overlays/overlay_map.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/overlay_map.dts
|
||||
@@ -203,6 +203,16 @@
|
||||
renamed = "miniuart-bt";
|
||||
};
|
||||
|
||||
+ pisound {
|
||||
+ bcm2835;
|
||||
+ bcm2711;
|
||||
+ bcm2712 = "pisound-pi5";
|
||||
+ };
|
||||
+
|
||||
+ pisound-pi5 {
|
||||
+ bcm2712;
|
||||
+ };
|
||||
+
|
||||
pwm1 {
|
||||
bcm2711;
|
||||
};
|
||||
--- a/arch/arm/boot/dts/overlays/pisound-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/pisound-overlay.dts
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Pisound Linux kernel module.
|
||||
- * Copyright (C) 2016-2017 Vilniaus Blokas UAB, https://blokas.io/pisound
|
||||
+ * Copyright (C) 2016-2024 Vilniaus Blokas UAB, https://blokas.io/pisound
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -56,6 +56,7 @@
|
||||
compatible = "blokaslabs,pisound-spi";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <1000000>;
|
||||
+ spi-speed-hz = <150000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -76,6 +77,7 @@
|
||||
__overlay__ {
|
||||
compatible = "blokaslabs,pisound";
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
+ spi-controller = <&pisound_spi>;
|
||||
status = "okay";
|
||||
|
||||
pinctrl-names = "default";
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/overlays/pisound-pi5-overlay.dts
|
||||
@@ -0,0 +1,31 @@
|
||||
+/*
|
||||
+ * Pisound Linux kernel module.
|
||||
+ * Copyright (C) 2016-2024 Vilniaus Blokas UAB, https://blokas.io/pisound
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * as published by the Free Software Foundation; version 2 of the
|
||||
+ * License.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+
|
||||
+#include "pisound-overlay.dts"
|
||||
+
|
||||
+&pisound_spi {
|
||||
+ spi-speed-hz = <100000>;
|
||||
+};
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2712";
|
||||
+};
|
@ -0,0 +1,51 @@
|
||||
From f85acc3d0fb33ce5c92578dca7b1345915f744ff Mon Sep 17 00:00:00 2001
|
||||
From: Tiago Freire <41837236+tiagofreire-pt@users.noreply.github.com>
|
||||
Date: Tue, 23 Jan 2024 12:10:24 +0000
|
||||
Subject: [PATCH 1252/1295] Improvement on backup-switchover-mode overlay value
|
||||
definitions (#5884)
|
||||
|
||||
For the RV3028 RTC, the definitions for its `backup-switchover-mode` overlay
|
||||
were not intelligible neither complete/exhaustive.
|
||||
|
||||
Accordingly to the https://github.com/raspberrypi/linux/issues/2912#issuecomment-477670051
|
||||
these one here proposed should be correct.
|
||||
|
||||
`/boot/config.txt` should be as a configuration example, for rv3028, on a
|
||||
Uputronics GPS Extension HAT:
|
||||
|
||||
# For GPS Expansion Board from Uputronics
|
||||
dtparam=i2c_arm=on
|
||||
dtoverlay=i2c-rtc,rv3028,backup-switchover-mode=3
|
||||
dtoverlay=pps-gpio,gpiopin=18
|
||||
init_uart_baud=115200
|
||||
|
||||
From my tests (`sudo rmmod rtc_rv3028 && sudo i2cget -y 1 0x52 0x37`):
|
||||
|
||||
`Default from factory`: `0x10`
|
||||
`Mode 0`: `0x10`
|
||||
`Mode 1`: `0x14`
|
||||
`Mode 2`: `0x18`
|
||||
`Mode 3`: `0x1c`
|
||||
|
||||
`Mode 3`: `0x1c` is consistent with the manufacturer configuration script: http://store.uputronics.com/files/configure-rv3028.sh
|
||||
---
|
||||
arch/arm/boot/dts/overlays/README | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -2106,7 +2106,13 @@ Params: abx80x Select o
|
||||
source
|
||||
|
||||
backup-switchover-mode Backup power supply switch mode. Must be 0 for
|
||||
- off or 1 for Vdd < VBackup (RV3028, RV3032)
|
||||
+ "Switchover disabled", 1 for "Direct Switching"
|
||||
+ (if Vdd < VBackup), 2 for "Standby
|
||||
+ Mode" (if Vdd < Vbackup,
|
||||
+ does not draw current) or 3 for
|
||||
+ "Level Switching" (if Vdd < Vbackup
|
||||
+ and Vdd < Vddsw and Vbackup > Vddsw)
|
||||
+ (RV3028, RV3032)
|
||||
|
||||
|
||||
Name: i2c-rtc-gpio
|
@ -0,0 +1,30 @@
|
||||
From f2ada4aa6b1d214c67b7efe874a408be9b4eaf3f Mon Sep 17 00:00:00 2001
|
||||
From: Tiago Freire <41837236+tiagofreire-pt@users.noreply.github.com>
|
||||
Date: Wed, 24 Jan 2024 10:03:03 +0000
|
||||
Subject: [PATCH 1253/1295] Harmonizing the improvement on
|
||||
backup-switchover-mode overlay value definitions
|
||||
|
||||
On the followup of https://github.com/raspberrypi/linux/pull/5884, I missed a second duplicate definition. Now, harmonized the entire document.
|
||||
|
||||
Signed-off-by: Tiago Freire <41837236+tiagofreire-pt@users.noreply.github.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/README | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -2184,7 +2184,13 @@ Params: abx80x Select o
|
||||
source
|
||||
|
||||
backup-switchover-mode Backup power supply switch mode. Must be 0 for
|
||||
- off or 1 for Vdd < VBackup (RV3028, RV3032)
|
||||
+ "Switchover disabled", 1 for "Direct Switching"
|
||||
+ (if Vdd < VBackup), 2 for "Standby
|
||||
+ Mode" (if Vdd < Vbackup,
|
||||
+ does not draw current) or 3 for
|
||||
+ "Level Switching" (if Vdd < Vbackup
|
||||
+ and Vdd < Vddsw and Vbackup > Vddsw)
|
||||
+ (RV3028, RV3032)
|
||||
|
||||
i2c_gpio_sda GPIO used for I2C data (default "23")
|
||||
|
@ -0,0 +1,85 @@
|
||||
From 1cdbd99f402b76c61632d09a49b20ce90af0cc72 Mon Sep 17 00:00:00 2001
|
||||
From: Rodrigo Rosmaninho <quico.rosmaninho@gmail.com>
|
||||
Date: Tue, 23 Jan 2024 18:50:19 +0000
|
||||
Subject: [PATCH 1254/1295] Add pcie-32bit-dma-overlay-pi5 to enable 32bit DMA
|
||||
on the Pi 5's external PCIe
|
||||
|
||||
Changes dma-ranges in the pcie1 component of the bcm2712 dts in order to ensure that the DMA addressing space is 32bits, at the expense of having to bounce buffers.
|
||||
|
||||
Signed-off-by: Rodrigo Rosmaninho <r.rosmaninho@ua.pt>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/Makefile | 1 +
|
||||
arch/arm/boot/dts/overlays/README | 6 +++++
|
||||
arch/arm/boot/dts/overlays/overlay_map.dts | 5 ++++
|
||||
.../overlays/pcie-32bit-dma-pi5-overlay.dts | 26 +++++++++++++++++++
|
||||
4 files changed, 38 insertions(+)
|
||||
create mode 100644 arch/arm/boot/dts/overlays/pcie-32bit-dma-pi5-overlay.dts
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/Makefile
|
||||
+++ b/arch/arm/boot/dts/overlays/Makefile
|
||||
@@ -182,6 +182,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
pca953x.dtbo \
|
||||
pcf857x.dtbo \
|
||||
pcie-32bit-dma.dtbo \
|
||||
+ pcie-32bit-dma-pi5.dtbo \
|
||||
pibell.dtbo \
|
||||
pifacedigital.dtbo \
|
||||
pifi-40.dtbo \
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -3388,6 +3388,12 @@ Load: dtoverlay=pcie-32bit-dma
|
||||
Params: <None>
|
||||
|
||||
|
||||
+Name: pcie-32bit-dma-pi5
|
||||
+Info: Force PCIe config to support 32bit DMA addresses at the expense of
|
||||
+ having to bounce buffers (on the Pi 5).
|
||||
+Load: dtoverlay=pcie-32bit-dma-pi5
|
||||
+Params: <None>
|
||||
+
|
||||
[ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ]
|
||||
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/overlay_map.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/overlay_map.dts
|
||||
@@ -185,6 +185,11 @@
|
||||
|
||||
pcie-32bit-dma {
|
||||
bcm2711;
|
||||
+ bcm2712 = "pcie-32bit-dma-pi5";
|
||||
+ };
|
||||
+
|
||||
+ pcie-32bit-dma-pi5 {
|
||||
+ bcm2712;
|
||||
};
|
||||
|
||||
pi3-act-led {
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/overlays/pcie-32bit-dma-pi5-overlay.dts
|
||||
@@ -0,0 +1,26 @@
|
||||
+/*
|
||||
+ * pcie-32bit-dma-pi5-overlay.dts
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2712";
|
||||
+
|
||||
+ fragment@0 {
|
||||
+ target = <&pcie1>;
|
||||
+ __overlay__ {
|
||||
+ /*
|
||||
+ * The size of the range is rounded up to a power of 2,
|
||||
+ * so the range ends up being 0-4GB, and the MSI vector
|
||||
+ * gets pushed beyond 4GB.
|
||||
+ */
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ dma-ranges = <0x02000000 0x0 0x00000000 0x0 0x00000000
|
||||
+ 0x0 0x80000000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+};
|
@ -0,0 +1,91 @@
|
||||
From b660279cc83aff2018cecfc3fb55757a8d64f607 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Tue, 16 Jan 2024 15:54:22 +0000
|
||||
Subject: [PATCH 1257/1295] i2c: designware: Use SCL rise and fall times in DT
|
||||
|
||||
Calculate the HCNT and LCNT values for all modes using the rise and
|
||||
fall times of SCL, the aim being a 50/50 mark/space ratio.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
drivers/i2c/busses/i2c-designware-master.c | 26 ++++++++++++++++++++++
|
||||
1 file changed, 26 insertions(+)
|
||||
|
||||
--- a/drivers/i2c/busses/i2c-designware-master.c
|
||||
+++ b/drivers/i2c/busses/i2c-designware-master.c
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
+#include <linux/math64.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/regmap.h>
|
||||
@@ -37,6 +38,22 @@ static void i2c_dw_configure_fifo_master
|
||||
regmap_write(dev->map, DW_IC_CON, dev->master_cfg);
|
||||
}
|
||||
|
||||
+static u16 clock_calc(struct dw_i2c_dev *dev, bool want_high)
|
||||
+{
|
||||
+ struct i2c_timings *t = &dev->timings;
|
||||
+ u32 wanted_speed = t->bus_freq_hz;
|
||||
+ u32 clk_khz = i2c_dw_clk_rate(dev);
|
||||
+ u32 extra_ns = want_high ? t->scl_fall_ns : t->scl_rise_ns;
|
||||
+ u32 extra_cycles = (u32)div_u64((u64)clk_khz * extra_ns, 1000000);
|
||||
+ u32 period = div_u64((u64)clk_khz * 1000 + wanted_speed - 1, wanted_speed);
|
||||
+ u32 cycles = (period + want_high)/2 - extra_cycles;
|
||||
+
|
||||
+ if (cycles > 0xffff)
|
||||
+ cycles = 0xffff;
|
||||
+
|
||||
+ return (u16)cycles;
|
||||
+}
|
||||
+
|
||||
static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
|
||||
{
|
||||
u32 comp_param1;
|
||||
@@ -44,6 +61,7 @@ static int i2c_dw_set_timings_master(str
|
||||
struct i2c_timings *t = &dev->timings;
|
||||
const char *fp_str = "";
|
||||
u32 ic_clk;
|
||||
+ u32 hcnt, lcnt;
|
||||
int ret;
|
||||
|
||||
ret = i2c_dw_acquire_lock(dev);
|
||||
@@ -59,6 +77,9 @@ static int i2c_dw_set_timings_master(str
|
||||
sda_falling_time = t->sda_fall_ns ?: 300; /* ns */
|
||||
scl_falling_time = t->scl_fall_ns ?: 300; /* ns */
|
||||
|
||||
+ hcnt = clock_calc(dev, true);
|
||||
+ lcnt = clock_calc(dev, false);
|
||||
+
|
||||
/* Calculate SCL timing parameters for standard mode if not set */
|
||||
if (!dev->ss_hcnt || !dev->ss_lcnt) {
|
||||
ic_clk = i2c_dw_clk_rate(dev);
|
||||
@@ -74,6 +95,8 @@ static int i2c_dw_set_timings_master(str
|
||||
scl_falling_time,
|
||||
0); /* No offset */
|
||||
}
|
||||
+ dev->ss_hcnt = hcnt;
|
||||
+ dev->ss_lcnt = lcnt;
|
||||
dev_dbg(dev->dev, "Standard Mode HCNT:LCNT = %d:%d\n",
|
||||
dev->ss_hcnt, dev->ss_lcnt);
|
||||
|
||||
@@ -124,6 +147,8 @@ static int i2c_dw_set_timings_master(str
|
||||
scl_falling_time,
|
||||
0); /* No offset */
|
||||
}
|
||||
+ dev->fs_hcnt = hcnt;
|
||||
+ dev->fs_lcnt = lcnt;
|
||||
dev_dbg(dev->dev, "Fast Mode%s HCNT:LCNT = %d:%d\n",
|
||||
fp_str, dev->fs_hcnt, dev->fs_lcnt);
|
||||
|
||||
@@ -152,6 +177,8 @@ static int i2c_dw_set_timings_master(str
|
||||
scl_falling_time,
|
||||
0); /* No offset */
|
||||
}
|
||||
+ dev->hs_hcnt = hcnt;
|
||||
+ dev->hs_lcnt = lcnt;
|
||||
dev_dbg(dev->dev, "High Speed Mode HCNT:LCNT = %d:%d\n",
|
||||
dev->hs_hcnt, dev->hs_lcnt);
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
From 6868dba87e2765042ac376a4a8427b9b981cd410 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Tue, 16 Jan 2024 16:03:14 +0000
|
||||
Subject: [PATCH 1258/1295] i2c: designware: Support non-standard bus speeds
|
||||
|
||||
Add support for non-standard bus speeds by treating them as detuned
|
||||
versions of the slowest standard speed not less than the requested
|
||||
speed.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
drivers/i2c/busses/i2c-designware-common.c | 27 ++++++++++++++++++++++
|
||||
drivers/i2c/busses/i2c-designware-core.h | 1 +
|
||||
drivers/i2c/busses/i2c-designware-master.c | 2 +-
|
||||
3 files changed, 29 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/i2c/busses/i2c-designware-common.c
|
||||
+++ b/drivers/i2c/busses/i2c-designware-common.c
|
||||
@@ -318,6 +318,9 @@ void i2c_dw_adjust_bus_speed(struct dw_i
|
||||
{
|
||||
u32 acpi_speed = i2c_dw_acpi_round_bus_speed(dev->dev);
|
||||
struct i2c_timings *t = &dev->timings;
|
||||
+ u32 wanted_speed;
|
||||
+ u32 legal_speed = 0;
|
||||
+ int i;
|
||||
|
||||
/*
|
||||
* Find bus speed from the "clock-frequency" device property, ACPI
|
||||
@@ -329,6 +332,30 @@ void i2c_dw_adjust_bus_speed(struct dw_i
|
||||
t->bus_freq_hz = max(t->bus_freq_hz, acpi_speed);
|
||||
else
|
||||
t->bus_freq_hz = I2C_MAX_FAST_MODE_FREQ;
|
||||
+
|
||||
+ wanted_speed = t->bus_freq_hz;
|
||||
+
|
||||
+ /* For unsupported speeds, scale down the lowest speed which is faster. */
|
||||
+ for (i = 0; i < ARRAY_SIZE(supported_speeds); i++) {
|
||||
+ /* supported speeds is in decreasing order */
|
||||
+ if (wanted_speed == supported_speeds[i]) {
|
||||
+ legal_speed = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+ if (wanted_speed > supported_speeds[i])
|
||||
+ break;
|
||||
+
|
||||
+ legal_speed = supported_speeds[i];
|
||||
+ }
|
||||
+
|
||||
+ if (legal_speed) {
|
||||
+ /*
|
||||
+ * Pretend this was the requested speed, but preserve the preferred
|
||||
+ * speed so the clock counts can be scaled.
|
||||
+ */
|
||||
+ t->bus_freq_hz = legal_speed;
|
||||
+ dev->wanted_bus_speed = wanted_speed;
|
||||
+ }
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(i2c_dw_adjust_bus_speed);
|
||||
|
||||
--- a/drivers/i2c/busses/i2c-designware-core.h
|
||||
+++ b/drivers/i2c/busses/i2c-designware-core.h
|
||||
@@ -287,6 +287,7 @@ struct dw_i2c_dev {
|
||||
u16 fp_lcnt;
|
||||
u16 hs_hcnt;
|
||||
u16 hs_lcnt;
|
||||
+ u32 wanted_bus_speed;
|
||||
int (*acquire_lock)(void);
|
||||
void (*release_lock)(void);
|
||||
int semaphore_idx;
|
||||
--- a/drivers/i2c/busses/i2c-designware-master.c
|
||||
+++ b/drivers/i2c/busses/i2c-designware-master.c
|
||||
@@ -41,7 +41,7 @@ static void i2c_dw_configure_fifo_master
|
||||
static u16 clock_calc(struct dw_i2c_dev *dev, bool want_high)
|
||||
{
|
||||
struct i2c_timings *t = &dev->timings;
|
||||
- u32 wanted_speed = t->bus_freq_hz;
|
||||
+ u32 wanted_speed = dev->wanted_bus_speed ?: t->bus_freq_hz;
|
||||
u32 clk_khz = i2c_dw_clk_rate(dev);
|
||||
u32 extra_ns = want_high ? t->scl_fall_ns : t->scl_rise_ns;
|
||||
u32 extra_cycles = (u32)div_u64((u64)clk_khz * extra_ns, 1000000);
|
@ -0,0 +1,78 @@
|
||||
From 4c7a8e9e40d915c61df188d6b9f82836b616bd4f Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Tue, 16 Jan 2024 16:05:18 +0000
|
||||
Subject: [PATCH 1259/1295] ARM: dts: rp1: Add I2C timings
|
||||
|
||||
Add SCL rise and fall times, to allow the derivation of timings at
|
||||
arbitrary speeds.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
arch/arm/boot/dts/rp1.dtsi | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/rp1.dtsi
|
||||
+++ b/arch/arm/boot/dts/rp1.dtsi
|
||||
@@ -305,6 +305,8 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ i2c-scl-rising-time-ns = <65>;
|
||||
+ i2c-scl-falling-time-ns = <100>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -313,6 +315,8 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C1 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ i2c-scl-rising-time-ns = <65>;
|
||||
+ i2c-scl-falling-time-ns = <100>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -321,6 +325,8 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ i2c-scl-rising-time-ns = <65>;
|
||||
+ i2c-scl-falling-time-ns = <100>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -329,6 +335,8 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C3 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ i2c-scl-rising-time-ns = <65>;
|
||||
+ i2c-scl-falling-time-ns = <100>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -337,6 +345,8 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C4 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ i2c-scl-rising-time-ns = <65>;
|
||||
+ i2c-scl-falling-time-ns = <100>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -345,6 +355,8 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ i2c-scl-rising-time-ns = <65>;
|
||||
+ i2c-scl-falling-time-ns = <100>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -353,6 +365,8 @@
|
||||
compatible = "snps,designware-i2c";
|
||||
interrupts = <RP1_INT_I2C6 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
+ i2c-scl-rising-time-ns = <65>;
|
||||
+ i2c-scl-falling-time-ns = <100>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 86450c7dc4df99c3b16677cb00c2d3caf01a40f6 Mon Sep 17 00:00:00 2001
|
||||
From: Ratchanan Srirattanamet <peathot@hotmail.com>
|
||||
Date: Tue, 30 Jan 2024 14:09:00 +0700
|
||||
Subject: [PATCH 1260/1295] iommu/bcm2712: don't allow building as module
|
||||
|
||||
Since bcm2712-iommu{,-cache}.c doesn't have usual module descriptors
|
||||
such as `MODULE_LICENSE`, configuring this as 'M' fails the build with
|
||||
`ERROR: modpost: missing MODULE_LICENSE() in <...>/bcm2712-iommu.o`.
|
||||
Since it seems like the code is not intended to be built as a module
|
||||
anyway (it registers the driver with `builtin_platform_driver()`), don't
|
||||
allow building this code as a module.
|
||||
|
||||
Signed-off-by: Ratchanan Srirattanamet <peathot@hotmail.com>
|
||||
---
|
||||
drivers/iommu/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/iommu/Kconfig
|
||||
+++ b/drivers/iommu/Kconfig
|
||||
@@ -507,7 +507,7 @@ config SPRD_IOMMU
|
||||
Say Y here if you want to use the multimedia devices listed above.
|
||||
|
||||
config BCM2712_IOMMU
|
||||
- tristate "BCM2712 IOMMU driver"
|
||||
+ bool "BCM2712 IOMMU driver"
|
||||
depends on ARM64 && ARCH_BCM
|
||||
select IOMMU_API
|
||||
help
|
@ -0,0 +1,59 @@
|
||||
From 57695002a68bdd4c077ea2173b64aeee6e1ef24f Mon Sep 17 00:00:00 2001
|
||||
From: Ratchanan Srirattanamet <peathot@hotmail.com>
|
||||
Date: Fri, 26 Jan 2024 18:49:42 +0700
|
||||
Subject: [PATCH 1261/1295] drm/rp1: depends on, instead of select, MFD_RP1
|
||||
|
||||
According to kconfig-language.txt [1], select should be used only for
|
||||
"non-visible symbols ... and for symbols with no dependencies". Since
|
||||
MFD_RP1 both is visible and has a dependency, "select" should not be
|
||||
used and "depends on" should be used instead.
|
||||
|
||||
In particular, this fixes the build of this kernel tree on NixOS, where
|
||||
its kernel config system will try to answer 'M' to as many config as
|
||||
possible.
|
||||
|
||||
[1] https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html
|
||||
|
||||
Signed-off-by: Ratchanan Srirattanamet <peathot@hotmail.com>
|
||||
---
|
||||
drivers/gpu/drm/rp1/rp1-dpi/Kconfig | 3 +--
|
||||
drivers/gpu/drm/rp1/rp1-dsi/Kconfig | 3 +--
|
||||
drivers/gpu/drm/rp1/rp1-vec/Kconfig | 3 +--
|
||||
3 files changed, 3 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/rp1/rp1-dpi/Kconfig
|
||||
+++ b/drivers/gpu/drm/rp1/rp1-dpi/Kconfig
|
||||
@@ -1,8 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DRM_RP1_DPI
|
||||
tristate "DRM Support for RP1 DPI"
|
||||
- depends on DRM
|
||||
- select MFD_RP1
|
||||
+ depends on DRM && MFD_RP1
|
||||
select DRM_GEM_DMA_HELPER
|
||||
select DRM_KMS_HELPER
|
||||
select DRM_VRAM_HELPER
|
||||
--- a/drivers/gpu/drm/rp1/rp1-dsi/Kconfig
|
||||
+++ b/drivers/gpu/drm/rp1/rp1-dsi/Kconfig
|
||||
@@ -1,8 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DRM_RP1_DSI
|
||||
tristate "DRM Support for RP1 DSI"
|
||||
- depends on DRM
|
||||
- select MFD_RP1
|
||||
+ depends on DRM && MFD_RP1
|
||||
select DRM_GEM_DMA_HELPER
|
||||
select DRM_KMS_HELPER
|
||||
select DRM_MIPI_DSI
|
||||
--- a/drivers/gpu/drm/rp1/rp1-vec/Kconfig
|
||||
+++ b/drivers/gpu/drm/rp1/rp1-vec/Kconfig
|
||||
@@ -1,8 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DRM_RP1_VEC
|
||||
tristate "DRM Support for RP1 VEC"
|
||||
- depends on DRM
|
||||
- select MFD_RP1
|
||||
+ depends on DRM && MFD_RP1
|
||||
select DRM_GEM_DMA_HELPER
|
||||
select DRM_KMS_HELPER
|
||||
select DRM_VRAM_HELPER
|
@ -0,0 +1,435 @@
|
||||
From 1c2a93ce0e1cf6d278cf565346183d7592cfbb24 Mon Sep 17 00:00:00 2001
|
||||
From: Melissa LeBlanc-Williams <melissa@adafruit.com>
|
||||
Date: Fri, 26 Jan 2024 14:41:42 -0800
|
||||
Subject: [PATCH 1262/1295] Update touch PiTFT overlays
|
||||
|
||||
Expose the invert and swap touch parameters on 2.8" and 3.5" resistive touchscreens. Add
|
||||
the DRM parameter to the PiTFT 2.2" and 2.8" Capacitive overlay in the same
|
||||
way it is on the resistive overlays. Change the DRM driver to `adafruit,yx240qv29`
|
||||
because the rotations are consistent with the FBTFT Driver. Fix the override size parameters
|
||||
on the 2.8" capacitive PiTFT.
|
||||
|
||||
Signed-off-by: Melissa LeBlanc-Williams <melissa@adafruit.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/README | 20 +++
|
||||
.../arm/boot/dts/overlays/pitft22-overlay.dts | 102 +++++++-------
|
||||
.../overlays/pitft28-capacitive-overlay.dts | 132 +++++++++---------
|
||||
.../overlays/pitft28-resistive-overlay.dts | 12 +-
|
||||
.../overlays/pitft35-resistive-overlay.dts | 10 +-
|
||||
5 files changed, 156 insertions(+), 120 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -3526,6 +3526,10 @@ Params: speed Display
|
||||
|
||||
debug Debug output level {0-7}
|
||||
|
||||
+ drm Force the use of the mi0283qt DRM driver (by
|
||||
+ default the ili9340 framebuffer driver will
|
||||
+ be used in preference if available)
|
||||
+
|
||||
|
||||
Name: pitft28-capacitive
|
||||
Info: Adafruit PiTFT 2.8" capacitive touch screen
|
||||
@@ -3538,6 +3542,10 @@ Params: speed Display
|
||||
|
||||
debug Debug output level {0-7}
|
||||
|
||||
+ drm Force the use of the mi0283qt DRM driver (by
|
||||
+ default the ili9340 framebuffer driver will
|
||||
+ be used in preference if available)
|
||||
+
|
||||
touch-sizex Touchscreen size x (default 240)
|
||||
|
||||
touch-sizey Touchscreen size y (default 320)
|
||||
@@ -3564,6 +3572,12 @@ Params: speed Display
|
||||
default the ili9340 framebuffer driver will
|
||||
be used in preference if available)
|
||||
|
||||
+ touch-invx Touchscreen inverted x axis
|
||||
+
|
||||
+ touch-invy Touchscreen inverted y axis
|
||||
+
|
||||
+ touch-swapxy Touchscreen swapped x y axis
|
||||
+
|
||||
|
||||
Name: pitft35-resistive
|
||||
Info: Adafruit PiTFT 3.5" resistive touch screen
|
||||
@@ -3580,6 +3594,12 @@ Params: speed Display
|
||||
default the fb_hx8357d framebuffer driver will
|
||||
be used in preference if available)
|
||||
|
||||
+ touch-invx Touchscreen inverted x axis
|
||||
+
|
||||
+ touch-invy Touchscreen inverted y axis
|
||||
+
|
||||
+ touch-swapxy Touchscreen swapped x y axis
|
||||
+
|
||||
|
||||
Name: pps-gpio
|
||||
Info: Configures the pps-gpio (pulse-per-second time signal via GPIO).
|
||||
--- a/arch/arm/boot/dts/overlays/pitft22-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
|
||||
@@ -7,63 +7,65 @@
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
- compatible = "brcm,bcm2835";
|
||||
+ compatible = "brcm,bcm2835";
|
||||
|
||||
- fragment@0 {
|
||||
- target = <&spidev0>;
|
||||
- __overlay__ {
|
||||
- status = "disabled";
|
||||
- };
|
||||
+ fragment@0 {
|
||||
+ target = <&spidev0>;
|
||||
+ __overlay__ {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
|
||||
- fragment@1 {
|
||||
- target = <&spidev1>;
|
||||
- __overlay__ {
|
||||
- status = "disabled";
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- fragment@2 {
|
||||
- target = <&gpio>;
|
||||
- __overlay__ {
|
||||
- pitft_pins: pitft_pins {
|
||||
- brcm,pins = <25>;
|
||||
- brcm,function = <1>; /* out */
|
||||
- brcm,pull = <0>; /* none */
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- fragment@3 {
|
||||
- target = <&spi0>;
|
||||
- __overlay__ {
|
||||
- /* needed to avoid dtc warning */
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- status = "okay";
|
||||
-
|
||||
- pitft: pitft@0{
|
||||
- compatible = "ilitek,ili9340";
|
||||
- reg = <0>;
|
||||
- pinctrl-names = "default";
|
||||
- pinctrl-0 = <&pitft_pins>;
|
||||
-
|
||||
- spi-max-frequency = <32000000>;
|
||||
- rotate = <90>;
|
||||
- fps = <25>;
|
||||
- bgr;
|
||||
- buswidth = <8>;
|
||||
- dc-gpios = <&gpio 25 0>;
|
||||
- debug = <0>;
|
||||
- };
|
||||
-
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- __overrides__ {
|
||||
- speed = <&pitft>,"spi-max-frequency:0";
|
||||
- rotate = <&pitft>,"rotate:0";
|
||||
- fps = <&pitft>,"fps:0";
|
||||
- debug = <&pitft>,"debug:0";
|
||||
- };
|
||||
+ fragment@1 {
|
||||
+ target = <&spidev1>;
|
||||
+ __overlay__ {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@2 {
|
||||
+ target = <&gpio>;
|
||||
+ __overlay__ {
|
||||
+ pitft_pins: pitft_pins {
|
||||
+ brcm,pins = <25>;
|
||||
+ brcm,function = <1>; /* out */
|
||||
+ brcm,pull = <0>; /* none */
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@3 {
|
||||
+ target = <&spi0>;
|
||||
+ __overlay__ {
|
||||
+ /* needed to avoid dtc warning */
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pitft: pitft@0{
|
||||
+ compatible = "ilitek,ili9340";
|
||||
+ reg = <0>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pitft_pins>;
|
||||
+
|
||||
+ spi-max-frequency = <32000000>;
|
||||
+ rotate = <90>;
|
||||
+ fps = <25>;
|
||||
+ bgr;
|
||||
+ buswidth = <8>;
|
||||
+ dc-gpios = <&gpio 25 0>;
|
||||
+ debug = <0>;
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ __overrides__ {
|
||||
+ speed = <&pitft>,"spi-max-frequency:0";
|
||||
+ rotate = <&pitft>,"rotate:0", /* fbtft */
|
||||
+ <&pitft>,"rotation:0"; /* drm */
|
||||
+ fps = <&pitft>,"fps:0";
|
||||
+ debug = <&pitft>,"debug:0";
|
||||
+ drm = <&pitft>,"compatible=adafruit,yx240qv29";
|
||||
+ };
|
||||
};
|
||||
--- a/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
|
||||
@@ -7,14 +7,14 @@
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
- compatible = "brcm,bcm2835";
|
||||
+ compatible = "brcm,bcm2835";
|
||||
|
||||
- fragment@0 {
|
||||
- target = <&spi0>;
|
||||
- __overlay__ {
|
||||
- status = "okay";
|
||||
- };
|
||||
- };
|
||||
+ fragment@0 {
|
||||
+ target = <&spi0>;
|
||||
+ __overlay__ {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
|
||||
fragment@1 {
|
||||
target = <&spidev0>;
|
||||
@@ -23,69 +23,71 @@
|
||||
};
|
||||
};
|
||||
|
||||
- fragment@2 {
|
||||
- target = <&gpio>;
|
||||
- __overlay__ {
|
||||
- pitft_pins: pitft_pins {
|
||||
- brcm,pins = <24 25>;
|
||||
- brcm,function = <0 1>; /* in out */
|
||||
- brcm,pull = <2 0>; /* pullup none */
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- fragment@3 {
|
||||
- target = <&spi0>;
|
||||
- __overlay__ {
|
||||
- /* needed to avoid dtc warning */
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
-
|
||||
- pitft: pitft@0{
|
||||
- compatible = "ilitek,ili9340";
|
||||
- reg = <0>;
|
||||
- pinctrl-names = "default";
|
||||
- pinctrl-0 = <&pitft_pins>;
|
||||
-
|
||||
- spi-max-frequency = <32000000>;
|
||||
- rotate = <90>;
|
||||
- fps = <25>;
|
||||
- bgr;
|
||||
- buswidth = <8>;
|
||||
- dc-gpios = <&gpio 25 0>;
|
||||
- debug = <0>;
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- fragment@4 {
|
||||
- target = <&i2c1>;
|
||||
- __overlay__ {
|
||||
- /* needed to avoid dtc warning */
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
-
|
||||
- ft6236: ft6236@38 {
|
||||
- compatible = "focaltech,ft6236";
|
||||
- reg = <0x38>;
|
||||
-
|
||||
- interrupt-parent = <&gpio>;
|
||||
- interrupts = <24 2>;
|
||||
- touchscreen-size-x = <240>;
|
||||
- touchscreen-size-y = <320>;
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- __overrides__ {
|
||||
- speed = <&pitft>,"spi-max-frequency:0";
|
||||
- rotate = <&pitft>,"rotate:0";
|
||||
- fps = <&pitft>,"fps:0";
|
||||
- debug = <&pitft>,"debug:0";
|
||||
- touch-sizex = <&ft6236>,"touchscreen-size-x?";
|
||||
- touch-sizey = <&ft6236>,"touchscreen-size-y?";
|
||||
- touch-invx = <&ft6236>,"touchscreen-inverted-x?";
|
||||
- touch-invy = <&ft6236>,"touchscreen-inverted-y?";
|
||||
- touch-swapxy = <&ft6236>,"touchscreen-swapped-x-y?";
|
||||
- };
|
||||
+ fragment@2 {
|
||||
+ target = <&gpio>;
|
||||
+ __overlay__ {
|
||||
+ pitft_pins: pitft_pins {
|
||||
+ brcm,pins = <24 25>;
|
||||
+ brcm,function = <0 1>; /* in out */
|
||||
+ brcm,pull = <2 0>; /* pullup none */
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@3 {
|
||||
+ target = <&spi0>;
|
||||
+ __overlay__ {
|
||||
+ /* needed to avoid dtc warning */
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ pitft: pitft@0{
|
||||
+ compatible = "ilitek,ili9340";
|
||||
+ reg = <0>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pitft_pins>;
|
||||
+
|
||||
+ spi-max-frequency = <32000000>;
|
||||
+ rotate = <90>;
|
||||
+ fps = <25>;
|
||||
+ bgr;
|
||||
+ buswidth = <8>;
|
||||
+ dc-gpios = <&gpio 25 0>;
|
||||
+ debug = <0>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@4 {
|
||||
+ target = <&i2c1>;
|
||||
+ __overlay__ {
|
||||
+ /* needed to avoid dtc warning */
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ ft6236: ft6236@38 {
|
||||
+ compatible = "focaltech,ft6236";
|
||||
+ reg = <0x38>;
|
||||
+
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ interrupts = <24 2>;
|
||||
+ touchscreen-size-x = <240>;
|
||||
+ touchscreen-size-y = <320>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ __overrides__ {
|
||||
+ speed = <&pitft>,"spi-max-frequency:0";
|
||||
+ rotate = <&pitft>,"rotate:0", /* fbtft */
|
||||
+ <&pitft>,"rotation:0"; /* drm */
|
||||
+ fps = <&pitft>,"fps:0";
|
||||
+ debug = <&pitft>,"debug:0";
|
||||
+ drm = <&pitft>,"compatible=adafruit,yx240qv29";
|
||||
+ touch-sizex = <&ft6236>,"touchscreen-size-x:0";
|
||||
+ touch-sizey = <&ft6236>,"touchscreen-size-y:0";
|
||||
+ touch-invx = <&ft6236>,"touchscreen-inverted-x?";
|
||||
+ touch-invy = <&ft6236>,"touchscreen-inverted-y?";
|
||||
+ touch-swapxy = <&ft6236>,"touchscreen-swapped-x-y?";
|
||||
+ };
|
||||
};
|
||||
--- a/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
|
||||
@@ -49,7 +49,7 @@
|
||||
#size-cells = <0>;
|
||||
|
||||
pitft: pitft@0{
|
||||
- compatible = "ilitek,ili9340", "multi-inno,mi0283qt";
|
||||
+ compatible = "ilitek,ili9340";
|
||||
reg = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pitft_pins>;
|
||||
@@ -64,6 +64,9 @@
|
||||
};
|
||||
|
||||
pitft_ts@1 {
|
||||
+ /* needed to avoid dtc warning */
|
||||
+ #address-cells = <1>;
|
||||
+ #interrupt-cells = <1>;
|
||||
compatible = "st,stmpe610";
|
||||
reg = <1>;
|
||||
|
||||
@@ -72,7 +75,7 @@
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupt-controller;
|
||||
|
||||
- stmpe_touchscreen {
|
||||
+ stmpe_touchscreen: stmpe_touchscreen {
|
||||
compatible = "st,stmpe-ts";
|
||||
st,sample-time = <4>;
|
||||
st,mod-12b = <1>;
|
||||
@@ -115,6 +118,9 @@
|
||||
<&pitft>,"rotation:0"; /* drm */
|
||||
fps = <&pitft>,"fps:0";
|
||||
debug = <&pitft>,"debug:0";
|
||||
- drm = <&pitft>,"compatible=multi-inno,mi0283qt";
|
||||
+ drm = <&pitft>,"compatible=adafruit,yx240qv29";
|
||||
+ touch-invx = <&stmpe_touchscreen>,"touchscreen-inverted-x?";
|
||||
+ touch-invy = <&stmpe_touchscreen>,"touchscreen-inverted-y?";
|
||||
+ touch-swapxy = <&stmpe_touchscreen>,"touchscreen-swapped-x-y?";
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
|
||||
@@ -49,7 +49,7 @@
|
||||
#size-cells = <0>;
|
||||
|
||||
pitft: pitft@0{
|
||||
- compatible = "himax,hx8357d", "adafruit,yx350hv15";
|
||||
+ compatible = "himax,hx8357d";
|
||||
reg = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pitft_pins>;
|
||||
@@ -64,6 +64,9 @@
|
||||
};
|
||||
|
||||
pitft_ts@1 {
|
||||
+ /* needed to avoid dtc warning */
|
||||
+ #address-cells = <1>;
|
||||
+ #interrupt-cells = <1>;
|
||||
compatible = "st,stmpe610";
|
||||
reg = <1>;
|
||||
|
||||
@@ -72,7 +75,7 @@
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupt-controller;
|
||||
|
||||
- stmpe_touchscreen {
|
||||
+ stmpe_touchscreen: stmpe_touchscreen {
|
||||
compatible = "st,stmpe-ts";
|
||||
st,sample-time = <4>;
|
||||
st,mod-12b = <1>;
|
||||
@@ -117,5 +120,8 @@
|
||||
debug = <&pitft>,"debug:0";
|
||||
drm = <&pitft>,"compatible=adafruit,yx350hv15",
|
||||
<&pitft>,"backlight:0=",<&backlight>;
|
||||
+ touch-invx = <&stmpe_touchscreen>,"touchscreen-inverted-x?";
|
||||
+ touch-invy = <&stmpe_touchscreen>,"touchscreen-inverted-y?";
|
||||
+ touch-swapxy = <&stmpe_touchscreen>,"touchscreen-swapped-x-y?";
|
||||
};
|
||||
};
|
@ -0,0 +1,95 @@
|
||||
From ea9b088747d379256e2582dd5c29638bf4ff9928 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Wed, 31 Jan 2024 17:20:07 +0000
|
||||
Subject: [PATCH 1263/1295] ARM: dts: rp1: Boost the I2C drive strength
|
||||
|
||||
Boosting the drive strength on I2C pins allows SCL to achieve safe
|
||||
voltage swings, even at 1MHz.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
arch/arm/boot/dts/rp1.dtsi | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/rp1.dtsi
|
||||
+++ b/arch/arm/boot/dts/rp1.dtsi
|
||||
@@ -650,66 +650,79 @@
|
||||
rp1_i2c4_34_35: rp1_i2c4_34_35 {
|
||||
function = "i2c4";
|
||||
pins = "gpio34", "gpio35";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c6_38_39: rp1_i2c6_38_39 {
|
||||
function = "i2c6";
|
||||
pins = "gpio38", "gpio39";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c4_40_41: rp1_i2c4_40_41 {
|
||||
function = "i2c4";
|
||||
pins = "gpio40", "gpio41";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c5_44_45: rp1_i2c5_44_45 {
|
||||
function = "i2c5";
|
||||
pins = "gpio44", "gpio45";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c0_0_1: rp1_i2c0_0_1 {
|
||||
function = "i2c0";
|
||||
pins = "gpio0", "gpio1";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c0_8_9: rp1_i2c0_8_9 {
|
||||
function = "i2c0";
|
||||
pins = "gpio8", "gpio9";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c1_2_3: rp1_i2c1_2_3 {
|
||||
function = "i2c1";
|
||||
pins = "gpio2", "gpio3";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c1_10_11: rp1_i2c1_10_11 {
|
||||
function = "i2c1";
|
||||
pins = "gpio10", "gpio11";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c2_4_5: rp1_i2c2_4_5 {
|
||||
function = "i2c2";
|
||||
pins = "gpio4", "gpio5";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c2_12_13: rp1_i2c2_12_13 {
|
||||
function = "i2c2";
|
||||
pins = "gpio12", "gpio13";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c3_6_7: rp1_i2c3_6_7 {
|
||||
function = "i2c3";
|
||||
pins = "gpio6", "gpio7";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c3_14_15: rp1_i2c3_14_15 {
|
||||
function = "i2c3";
|
||||
pins = "gpio14", "gpio15";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
rp1_i2c3_22_23: rp1_i2c3_22_23 {
|
||||
function = "i2c3";
|
||||
pins = "gpio22", "gpio23";
|
||||
+ drive-strength = <12>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
@ -0,0 +1,75 @@
|
||||
From 15dedc2ad5a9073b8639881680672214f605a5c6 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Wed, 31 Jan 2024 17:44:02 +0000
|
||||
Subject: [PATCH 1264/1295] ARM: dts: rp1: Add a safe I2C SDA hold time
|
||||
|
||||
Failing to set a reasonable SDA hold time can cause SDA to change too
|
||||
close to the falling edge of SCL. 300ns is the recommended minimum
|
||||
interval between the two at 100kHz and 400kHz, and also seems to
|
||||
work at 1MHz, so use that.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/5914
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
arch/arm/boot/dts/rp1.dtsi | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/rp1.dtsi
|
||||
+++ b/arch/arm/boot/dts/rp1.dtsi
|
||||
@@ -307,6 +307,7 @@
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
i2c-scl-rising-time-ns = <65>;
|
||||
i2c-scl-falling-time-ns = <100>;
|
||||
+ i2c-sda-hold-time-ns = <300>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -317,6 +318,7 @@
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
i2c-scl-rising-time-ns = <65>;
|
||||
i2c-scl-falling-time-ns = <100>;
|
||||
+ i2c-sda-hold-time-ns = <300>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -327,6 +329,7 @@
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
i2c-scl-rising-time-ns = <65>;
|
||||
i2c-scl-falling-time-ns = <100>;
|
||||
+ i2c-sda-hold-time-ns = <300>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -337,6 +340,7 @@
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
i2c-scl-rising-time-ns = <65>;
|
||||
i2c-scl-falling-time-ns = <100>;
|
||||
+ i2c-sda-hold-time-ns = <300>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -347,6 +351,7 @@
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
i2c-scl-rising-time-ns = <65>;
|
||||
i2c-scl-falling-time-ns = <100>;
|
||||
+ i2c-sda-hold-time-ns = <300>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -357,6 +362,7 @@
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
i2c-scl-rising-time-ns = <65>;
|
||||
i2c-scl-falling-time-ns = <100>;
|
||||
+ i2c-sda-hold-time-ns = <300>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -367,6 +373,7 @@
|
||||
clocks = <&rp1_clocks RP1_CLK_SYS>;
|
||||
i2c-scl-rising-time-ns = <65>;
|
||||
i2c-scl-falling-time-ns = <100>;
|
||||
+ i2c-sda-hold-time-ns = <300>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -0,0 +1,33 @@
|
||||
From 89bd4e64da3345c2764a42875b99c96fa8931967 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Schambacher <joerg@hifiberry.com>
|
||||
Date: Thu, 1 Feb 2024 17:32:44 +0100
|
||||
Subject: [PATCH 1265/1295] ASoC: DACplus - fix 16bit sample support in clock
|
||||
consumer mode
|
||||
|
||||
The former code did not adjust the physical sample width when
|
||||
in clock consumer mode and has taken the fixed 32 bit default.
|
||||
This has caused the audio to be played at half its frequency due to
|
||||
the fixed bclk_ratio of 64.
|
||||
|
||||
Signed-off-by: Joerg Schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
sound/soc/bcm/hifiberry_dacplus.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
--- a/sound/soc/bcm/hifiberry_dacplus.c
|
||||
+++ b/sound/soc/bcm/hifiberry_dacplus.c
|
||||
@@ -279,13 +279,11 @@ static int snd_rpi_hifiberry_dacplus_hw_
|
||||
int ret = 0;
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
int channels = params_channels(params);
|
||||
- int width = 32;
|
||||
+ int width = snd_pcm_format_physical_width(params_format(params));
|
||||
|
||||
if (snd_rpi_hifiberry_is_dacpro) {
|
||||
struct snd_soc_component *component = asoc_rtd_to_codec(rtd, 0)->component;
|
||||
|
||||
- width = snd_pcm_format_physical_width(params_format(params));
|
||||
-
|
||||
snd_rpi_hifiberry_dacplus_set_sclk(component,
|
||||
params_rate(params));
|
||||
|
@ -0,0 +1,114 @@
|
||||
From d58c054ba30b313bacbb7d19f559ecb4e3bb5c76 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Schambacher <joerg@hifiberry.com>
|
||||
Date: Fri, 19 Jan 2024 10:58:39 +0100
|
||||
Subject: [PATCH 1266/1295] ASoC: adds support for AMP4 Pro to the DAC Plus
|
||||
driver
|
||||
|
||||
The AMP4 Pro is a I2S master mode capable amplifier with
|
||||
clean onboard clock generators.
|
||||
We can share the card driver between TAS575x amplifiers
|
||||
and the PCM512x DACs as they are SW compatible.
|
||||
From a HW perspective though we need to limit the sample
|
||||
rates to the standard audio rates to avoid running the
|
||||
onboard clocks through the PLL. Using the PLL would require
|
||||
even a different HW.
|
||||
DAI/stream name are also set accordingly to allow the user
|
||||
a convenient identification of the soundcard
|
||||
|
||||
Needs the pcm512x driver with TAS575x support (already in
|
||||
upstream kernel).
|
||||
|
||||
Signed-off-by: Joerg Schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
sound/soc/bcm/hifiberry_dacplus.c | 41 ++++++++++++++++++++++++++++---
|
||||
1 file changed, 38 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/sound/soc/bcm/hifiberry_dacplus.c
|
||||
+++ b/sound/soc/bcm/hifiberry_dacplus.c
|
||||
@@ -58,10 +58,21 @@ static bool leds_off;
|
||||
static bool auto_mute;
|
||||
static int mute_ext_ctl;
|
||||
static int mute_ext;
|
||||
+static bool tas_device;
|
||||
static struct gpio_desc *snd_mute_gpio;
|
||||
static struct gpio_desc *snd_reset_gpio;
|
||||
static struct snd_soc_card snd_rpi_hifiberry_dacplus;
|
||||
|
||||
+static const u32 master_dai_rates[] = {
|
||||
+ 44100, 48000, 88200, 96000,
|
||||
+ 176400, 192000, 352800, 384000,
|
||||
+};
|
||||
+
|
||||
+static const struct snd_pcm_hw_constraint_list constraints_master = {
|
||||
+ .count = ARRAY_SIZE(master_dai_rates),
|
||||
+ .list = master_dai_rates,
|
||||
+};
|
||||
+
|
||||
static int snd_rpi_hifiberry_dacplus_mute_set(int mute)
|
||||
{
|
||||
gpiod_set_value_cansleep(snd_mute_gpio, mute);
|
||||
@@ -197,8 +208,13 @@ static int snd_rpi_hifiberry_dacplus_ini
|
||||
if (snd_rpi_hifiberry_is_dacpro) {
|
||||
struct snd_soc_dai_link *dai = rtd->dai_link;
|
||||
|
||||
- dai->name = "HiFiBerry DAC+ Pro";
|
||||
- dai->stream_name = "HiFiBerry DAC+ Pro HiFi";
|
||||
+ if (tas_device) {
|
||||
+ dai->name = "HiFiBerry AMP4 Pro";
|
||||
+ dai->stream_name = "HiFiBerry AMP4 Pro HiFi";
|
||||
+ } else {
|
||||
+ dai->name = "HiFiBerry DAC+ Pro";
|
||||
+ dai->stream_name = "HiFiBerry DAC+ Pro HiFi";
|
||||
+ }
|
||||
dai->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
|
||||
| SND_SOC_DAIFMT_CBM_CFM;
|
||||
|
||||
@@ -303,6 +319,18 @@ static int snd_rpi_hifiberry_dacplus_sta
|
||||
{
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
struct snd_soc_component *component = asoc_rtd_to_codec(rtd, 0)->component;
|
||||
+ int ret;
|
||||
+
|
||||
+ if (tas_device && !slave) {
|
||||
+ ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
|
||||
+ SNDRV_PCM_HW_PARAM_RATE,
|
||||
+ &constraints_master);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(rtd->card->dev,
|
||||
+ "Cannot apply constraints for sample rates\n");
|
||||
+ return ret;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if (auto_mute)
|
||||
gpiod_set_value_cansleep(snd_mute_gpio, 0);
|
||||
@@ -324,7 +352,7 @@ static void snd_rpi_hifiberry_dacplus_sh
|
||||
}
|
||||
|
||||
/* machine stream operations */
|
||||
-static struct snd_soc_ops snd_rpi_hifiberry_dacplus_ops = {
|
||||
+static const struct snd_soc_ops snd_rpi_hifiberry_dacplus_ops = {
|
||||
.hw_params = snd_rpi_hifiberry_dacplus_hw_params,
|
||||
.startup = snd_rpi_hifiberry_dacplus_startup,
|
||||
.shutdown = snd_rpi_hifiberry_dacplus_shutdown,
|
||||
@@ -394,6 +422,7 @@ static int snd_rpi_hifiberry_dacplus_pro
|
||||
struct snd_soc_card *card = &snd_rpi_hifiberry_dacplus;
|
||||
int len;
|
||||
struct device_node *tpa_node;
|
||||
+ struct device_node *tas_node;
|
||||
struct property *tpa_prop;
|
||||
struct of_changeset ocs;
|
||||
struct property *pp;
|
||||
@@ -430,6 +459,12 @@ static int snd_rpi_hifiberry_dacplus_pro
|
||||
}
|
||||
}
|
||||
|
||||
+ tas_node = of_find_compatible_node(NULL, NULL, "ti,tas5756");
|
||||
+ if (tas_node) {
|
||||
+ tas_device = true;
|
||||
+ dev_info(&pdev->dev, "TAS5756 device found!\n");
|
||||
+ };
|
||||
+
|
||||
snd_rpi_hifiberry_dacplus.dev = &pdev->dev;
|
||||
if (pdev->dev.of_node) {
|
||||
struct device_node *i2s_node;
|
@ -0,0 +1,130 @@
|
||||
From 98ac9b84709dc01ee936b6fe79eaac5e3a4aa6e7 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Schambacher <joerg@hifiberry.com>
|
||||
Date: Fri, 19 Jan 2024 10:44:22 +0100
|
||||
Subject: [PATCH 1267/1295] DT-overlays: adds support for Hifiberry AMP4 Pro
|
||||
|
||||
The AMP4 Pro uses a TI TAS5756 amplifier in master mode
|
||||
and requires the DAC Plus card driver and the
|
||||
pcm512x component driver with TAS support.
|
||||
|
||||
Signed-off-by: Joerg Schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/Makefile | 1 +
|
||||
arch/arm/boot/dts/overlays/README | 28 +++++++++
|
||||
.../overlays/hifiberry-amp4pro-overlay.dts | 63 +++++++++++++++++++
|
||||
3 files changed, 92 insertions(+)
|
||||
create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp4pro-overlay.dts
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/Makefile
|
||||
+++ b/arch/arm/boot/dts/overlays/Makefile
|
||||
@@ -86,6 +86,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
hifiberry-amp.dtbo \
|
||||
hifiberry-amp100.dtbo \
|
||||
hifiberry-amp3.dtbo \
|
||||
+ hifiberry-amp4pro.dtbo \
|
||||
hifiberry-dac.dtbo \
|
||||
hifiberry-dacplus.dtbo \
|
||||
hifiberry-dacplusadc.dtbo \
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -1738,6 +1738,34 @@ Load: dtoverlay=hifiberry-amp3
|
||||
Params: <None>
|
||||
|
||||
|
||||
+Name: hifiberry-amp4pro
|
||||
+Info: Configures the HifiBerry AMP4 Pro audio card
|
||||
+Load: dtoverlay=hifiberry-amp4pro,<param>=<val>
|
||||
+Params: 24db_digital_gain Allow gain to be applied via the TAS5756
|
||||
+ Digital volume control. Enable with
|
||||
+ "dtoverlay=hifiberry-amp4pro,24db_digital_gain"
|
||||
+ (The default behaviour is that the Digital
|
||||
+ volume control is limited to a maximum of
|
||||
+ 0dB. ie. it can attenuate but not provide
|
||||
+ gain. For most users, this will be desired
|
||||
+ as it will prevent clipping. By appending
|
||||
+ the 24dB_digital_gain parameter, the Digital
|
||||
+ volume control will allow up to 24dB of
|
||||
+ gain. If this parameter is enabled, it is the
|
||||
+ responsibility of the user to ensure that
|
||||
+ the Digital volume control is set to a value
|
||||
+ that does not result in clipping/distortion!)
|
||||
+ slave Force the amp into slave mode, using Pi as
|
||||
+ master for bit clock and frame clock.
|
||||
+ leds_off If set to 'true' the onboard indicator LEDs
|
||||
+ are switched off at all times.
|
||||
+ auto_mute If set to 'true' the amplifier is automatically
|
||||
+ muted when it is not playing.
|
||||
+ mute_ext_ctl The amplifier's HW mute control is enabled
|
||||
+ in ALSA mixer and set to <val>.
|
||||
+ Will be overwritten by ALSA user settings.
|
||||
+
|
||||
+
|
||||
Name: hifiberry-dac
|
||||
Info: Configures the HifiBerry DAC audio cards
|
||||
Load: dtoverlay=hifiberry-dac
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/overlays/hifiberry-amp4pro-overlay.dts
|
||||
@@ -0,0 +1,63 @@
|
||||
+// Definitions for HiFiBerry AMP4PRO
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2835";
|
||||
+
|
||||
+ fragment@0 {
|
||||
+ target-path = "/";
|
||||
+ __overlay__ {
|
||||
+ dacpro_osc: dacpro_osc {
|
||||
+ compatible = "hifiberry,dacpro-clk";
|
||||
+ #clock-cells = <0>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ frag1: fragment@1 {
|
||||
+ target = <&i2s_clk_consumer>;
|
||||
+ __overlay__ {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@2 {
|
||||
+ target = <&i2c1>;
|
||||
+ __overlay__ {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ tas5756@4d {
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ compatible = "ti,tas5756";
|
||||
+ reg = <0x4d>;
|
||||
+ clocks = <&dacpro_osc>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@3 {
|
||||
+ target = <&sound>;
|
||||
+ hifiberry_dacplus: __overlay__ {
|
||||
+ compatible = "hifiberry,hifiberry-dacplus";
|
||||
+ i2s-controller = <&i2s_clk_consumer>;
|
||||
+ status = "okay";
|
||||
+ mute-gpio = <&gpio 4 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ __overrides__ {
|
||||
+ 24db_digital_gain =
|
||||
+ <&hifiberry_dacplus>,"hifiberry-amp4,24db_digital_gain?";
|
||||
+ leds_off = <&hifiberry_dacplus>,"hifiberry-amp4,leds_off?";
|
||||
+ mute_ext_ctl = <&hifiberry_dacplus>,"hifiberry-amp4,mute_ext_ctl:0";
|
||||
+ auto_mute = <&hifiberry_dacplus>,"hifiberry-amp4,auto_mute?";
|
||||
+ slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?",
|
||||
+ <&frag1>,"target:0=",<&i2s_clk_producer>,
|
||||
+ <&hifiberry_dacplus>,"i2s-controller:0=",<&i2s_clk_producer>;
|
||||
+ };
|
||||
+};
|
@ -0,0 +1,38 @@
|
||||
From ba86793796525f8276fafbaf9d31d5156a2cfcb5 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Schambacher <joerg@hifiberry.com>
|
||||
Date: Fri, 2 Feb 2024 08:51:06 +0100
|
||||
Subject: [PATCH 1268/1295] ASoC: DACplusADCPro - fix 16bit sample support in
|
||||
clock consumer mode
|
||||
|
||||
The former code did not adjust the physical sample width when in
|
||||
clock consumer mode and has taken the fixed 32 bit default. This
|
||||
has caused the audio to be played at half its frequency due to
|
||||
the fixed bclk_ratio of 64.
|
||||
|
||||
Problem appears only on PI5 as on the former PIs the I2S module
|
||||
did simply run at fixed 64x rate.
|
||||
|
||||
Signed-off-by: Joerg Schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
sound/soc/bcm/hifiberry_dacplusadcpro.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
--- a/sound/soc/bcm/hifiberry_dacplusadcpro.c
|
||||
+++ b/sound/soc/bcm/hifiberry_dacplusadcpro.c
|
||||
@@ -383,15 +383,13 @@ static int snd_rpi_hifiberry_dacplusadcp
|
||||
int ret = 0;
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
int channels = params_channels(params);
|
||||
- int width = 32;
|
||||
+ int width = snd_pcm_format_physical_width(params_format(params));
|
||||
struct snd_soc_component *dac = asoc_rtd_to_codec(rtd, 0)->component;
|
||||
struct snd_soc_dai *dai = asoc_rtd_to_codec(rtd, 0);
|
||||
struct snd_soc_dai_driver *drv = dai->driver;
|
||||
const struct snd_soc_dai_ops *ops = drv->ops;
|
||||
|
||||
if (snd_rpi_hifiberry_is_dacpro) {
|
||||
- width = snd_pcm_format_physical_width(params_format(params));
|
||||
-
|
||||
snd_rpi_hifiberry_dacplusadcpro_set_sclk(dac,
|
||||
params_rate(params));
|
||||
|
@ -0,0 +1,72 @@
|
||||
From 707f6e221946ec2025e8f0e2fedf92016ed8a5b7 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Fri, 2 Feb 2024 14:08:14 +0000
|
||||
Subject: [PATCH 1269/1295] overlays: Correct some compatible strings
|
||||
|
||||
More thorough overlay testing has identified some Pi 4-specific
|
||||
overlays that has "brcm,bcm2835" compatible strings. Correct them.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/midi-uart2-overlay.dts | 2 +-
|
||||
arch/arm/boot/dts/overlays/midi-uart3-overlay.dts | 2 +-
|
||||
arch/arm/boot/dts/overlays/midi-uart4-overlay.dts | 2 +-
|
||||
arch/arm/boot/dts/overlays/midi-uart5-overlay.dts | 2 +-
|
||||
arch/arm/boot/dts/overlays/ramoops-pi4-overlay.dts | 2 +-
|
||||
5 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/midi-uart2-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/midi-uart2-overlay.dts
|
||||
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
/{
|
||||
- compatible = "brcm,bcm2835";
|
||||
+ compatible = "brcm,bcm2711";
|
||||
|
||||
fragment@0 {
|
||||
target-path = "/";
|
||||
--- a/arch/arm/boot/dts/overlays/midi-uart3-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/midi-uart3-overlay.dts
|
||||
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
/{
|
||||
- compatible = "brcm,bcm2835";
|
||||
+ compatible = "brcm,bcm2711";
|
||||
|
||||
fragment@0 {
|
||||
target-path = "/";
|
||||
--- a/arch/arm/boot/dts/overlays/midi-uart4-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/midi-uart4-overlay.dts
|
||||
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
/{
|
||||
- compatible = "brcm,bcm2835";
|
||||
+ compatible = "brcm,bcm2711";
|
||||
|
||||
fragment@0 {
|
||||
target-path = "/";
|
||||
--- a/arch/arm/boot/dts/overlays/midi-uart5-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/midi-uart5-overlay.dts
|
||||
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
/{
|
||||
- compatible = "brcm,bcm2835";
|
||||
+ compatible = "brcm,bcm2711";
|
||||
|
||||
fragment@0 {
|
||||
target-path = "/";
|
||||
--- a/arch/arm/boot/dts/overlays/ramoops-pi4-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/ramoops-pi4-overlay.dts
|
||||
@@ -2,7 +2,7 @@
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
- compatible = "brcm,bcm2835";
|
||||
+ compatible = "brcm,bcm2711";
|
||||
|
||||
fragment@0 {
|
||||
target = <&rmem>;
|
@ -0,0 +1,57 @@
|
||||
From 223d1247c0b0c0659a65949b6b9c3de53fd14223 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Fri, 2 Feb 2024 14:14:47 +0000
|
||||
Subject: [PATCH 1270/1295] overlays: Delete deprecated overlay mpu6050
|
||||
|
||||
The mpu6050 overlay has been deprecated for a year (when we were still
|
||||
shipping rpi-5.15.y). Delete it.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/Makefile | 1 -
|
||||
.../arm/boot/dts/overlays/mpu6050-overlay.dts | 29 -------------------
|
||||
2 files changed, 30 deletions(-)
|
||||
delete mode 100644 arch/arm/boot/dts/overlays/mpu6050-overlay.dts
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/Makefile
|
||||
+++ b/arch/arm/boot/dts/overlays/Makefile
|
||||
@@ -172,7 +172,6 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
mipi-dbi-spi.dtbo \
|
||||
mlx90640.dtbo \
|
||||
mmc.dtbo \
|
||||
- mpu6050.dtbo \
|
||||
mz61581.dtbo \
|
||||
ov2311.dtbo \
|
||||
ov5647.dtbo \
|
||||
--- a/arch/arm/boot/dts/overlays/mpu6050-overlay.dts
|
||||
+++ /dev/null
|
||||
@@ -1,29 +0,0 @@
|
||||
-// Definitions for MPU6050
|
||||
-/dts-v1/;
|
||||
-/plugin/;
|
||||
-
|
||||
-/ {
|
||||
- compatible = "brcm,bcm2835";
|
||||
-
|
||||
- fragment@0 {
|
||||
- target = <&i2c1>;
|
||||
- __overlay__ {
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- status = "okay";
|
||||
- clock-frequency = <400000>;
|
||||
-
|
||||
- mpu6050: mpu6050@68 {
|
||||
- compatible = "invensense,mpu6050";
|
||||
- reg = <0x68>;
|
||||
- interrupt-parent = <&gpio>;
|
||||
- interrupts = <4 1>;
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- __overrides__ {
|
||||
- interrupt = <&mpu6050>,"interrupts:0";
|
||||
- addr = <&mpu6050>,"reg:0";
|
||||
- };
|
||||
-};
|
@ -0,0 +1,36 @@
|
||||
From beba81b0b77268f72d717ab8ec98afe11a176ee0 Mon Sep 17 00:00:00 2001
|
||||
From: Naushir Patuck <naush@raspberrypi.com>
|
||||
Date: Mon, 5 Feb 2024 12:12:17 +0000
|
||||
Subject: [PATCH 1271/1295] drivers: media: cfe: Increase default size of
|
||||
embedded buffer
|
||||
|
||||
Increase the size of the default embedded buffer to 16k. This is done to
|
||||
match what is advertised by the IMX219 driver and workaround a problem
|
||||
where the embedded stream is not actually used. Without full streams API
|
||||
support, the media pipeline validation will fail in these circumstances.
|
||||
|
||||
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
|
||||
---
|
||||
drivers/media/platform/raspberrypi/rp1_cfe/cfe.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
|
||||
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
|
||||
@@ -93,7 +93,7 @@ MODULE_PARM_DESC(verbose_debug, "verbose
|
||||
#define MIN_WIDTH 16
|
||||
#define MIN_HEIGHT 16
|
||||
/* Default size of the embedded buffer */
|
||||
-#define DEFAULT_EMBEDDED_SIZE 8192
|
||||
+#define DEFAULT_EMBEDDED_SIZE 16384
|
||||
|
||||
const struct v4l2_mbus_framefmt cfe_default_format = {
|
||||
.width = 640,
|
||||
@@ -107,7 +107,7 @@ const struct v4l2_mbus_framefmt cfe_defa
|
||||
};
|
||||
|
||||
const struct v4l2_mbus_framefmt cfe_default_meta_format = {
|
||||
- .width = 8192,
|
||||
+ .width = DEFAULT_EMBEDDED_SIZE,
|
||||
.height = 1,
|
||||
.code = MEDIA_BUS_FMT_SENSOR_DATA,
|
||||
.field = V4L2_FIELD_NONE,
|
@ -0,0 +1,26 @@
|
||||
From 58c600f728f2787e905eff2f678fa9cf09694004 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Fri, 2 Feb 2024 15:41:29 +0000
|
||||
Subject: [PATCH 1274/1295] serial: sc16is7xx: Don't spin if no data received
|
||||
|
||||
There are multiple causes of interrupts, errors being one, and only the
|
||||
receipt of data warrants continued polling.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/2676
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
drivers/tty/serial/sc16is7xx.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/tty/serial/sc16is7xx.c
|
||||
+++ b/drivers/tty/serial/sc16is7xx.c
|
||||
@@ -762,6 +762,8 @@ static bool sc16is7xx_port_irq(struct sc
|
||||
|
||||
if (rxlen)
|
||||
sc16is7xx_handle_rx(port, rxlen, iir);
|
||||
+ else
|
||||
+ rc = false;
|
||||
break;
|
||||
/* CTSRTS interrupt comes only when CTS goes inactive */
|
||||
case SC16IS7XX_IIR_CTSRTS_SRC:
|
@ -0,0 +1,196 @@
|
||||
From fb21611efd7cd916646d9ab2988c3af08f139761 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Payne <ben@bluerocksoft.com>
|
||||
Date: Tue, 13 Feb 2024 14:55:14 -0800
|
||||
Subject: [PATCH 1276/1295] Impliment driver support for Interlude Audio
|
||||
Digital Hat
|
||||
|
||||
Implementing driver support for
|
||||
Interlude audio's WM8805 based digital hat
|
||||
by leveraging existing drivers
|
||||
---
|
||||
sound/soc/bcm/rpi-wm8804-soundcard.c | 139 +++++++++++++++++++++++++++
|
||||
1 file changed, 139 insertions(+)
|
||||
|
||||
--- a/sound/soc/bcm/rpi-wm8804-soundcard.c
|
||||
+++ b/sound/soc/bcm/rpi-wm8804-soundcard.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/module.h>
|
||||
+#include <linux/delay.h>
|
||||
|
||||
#include <sound/core.h>
|
||||
#include <sound/pcm.h>
|
||||
@@ -65,6 +66,10 @@ struct snd_rpi_wm8804_drvdata {
|
||||
static struct gpio_desc *snd_clk44gpio;
|
||||
static struct gpio_desc *snd_clk48gpio;
|
||||
static int wm8804_samplerate = 0;
|
||||
+static struct gpio_desc *led_gpio_1;
|
||||
+static struct gpio_desc *led_gpio_2;
|
||||
+static struct gpio_desc *led_gpio_3;
|
||||
+static struct gpio_desc *custom_reset;
|
||||
|
||||
/* Forward declarations */
|
||||
static struct snd_soc_dai_link snd_allo_digione_dai[];
|
||||
@@ -74,6 +79,37 @@ static struct snd_soc_card snd_rpi_wm880
|
||||
#define CLK_44EN_RATE 22579200UL
|
||||
#define CLK_48EN_RATE 24576000UL
|
||||
|
||||
+static const char * const wm8805_input_select_text[] = {
|
||||
+ "Rx 0",
|
||||
+ "Rx 1",
|
||||
+ "Rx 2",
|
||||
+ "Rx 3",
|
||||
+ "Rx 4",
|
||||
+ "Rx 5",
|
||||
+ "Rx 6",
|
||||
+ "Rx 7"
|
||||
+};
|
||||
+
|
||||
+static const unsigned int wm8805_input_channel_select_value[] = {
|
||||
+ 0, 1, 2, 3, 4, 5, 6, 7
|
||||
+};
|
||||
+
|
||||
+static const struct soc_enum wm8805_input_channel_sel[] = {
|
||||
+ SOC_VALUE_ENUM_SINGLE(WM8804_PLL6, 0, 7, ARRAY_SIZE(wm8805_input_select_text),
|
||||
+ wm8805_input_select_text, wm8805_input_channel_select_value),
|
||||
+};
|
||||
+
|
||||
+static const struct snd_kcontrol_new wm8805_input_controls_card[] = {
|
||||
+ SOC_ENUM("Select Input Channel", wm8805_input_channel_sel[0]),
|
||||
+};
|
||||
+
|
||||
+static int wm8805_add_input_controls(struct snd_soc_component *component)
|
||||
+{
|
||||
+ snd_soc_add_component_controls(component, wm8805_input_controls_card,
|
||||
+ ARRAY_SIZE(wm8805_input_controls_card));
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static unsigned int snd_rpi_wm8804_enable_clock(unsigned int samplerate)
|
||||
{
|
||||
switch (samplerate) {
|
||||
@@ -187,6 +223,53 @@ static struct snd_soc_ops snd_rpi_wm8804
|
||||
.hw_params = snd_rpi_wm8804_hw_params,
|
||||
};
|
||||
|
||||
+static int snd_interlude_audio_hw_params(struct snd_pcm_substream *substream,
|
||||
+ struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ int ret = snd_rpi_wm8804_hw_params(substream, params);
|
||||
+ int samplerate = params_rate(params);
|
||||
+
|
||||
+ switch (samplerate) {
|
||||
+ case 44100:
|
||||
+ gpiod_set_value_cansleep(led_gpio_1, 1);
|
||||
+ gpiod_set_value_cansleep(led_gpio_2, 0);
|
||||
+ gpiod_set_value_cansleep(led_gpio_3, 0);
|
||||
+ break;
|
||||
+ case 48000:
|
||||
+ gpiod_set_value_cansleep(led_gpio_1, 1);
|
||||
+ gpiod_set_value_cansleep(led_gpio_2, 0);
|
||||
+ gpiod_set_value_cansleep(led_gpio_3, 0);
|
||||
+ break;
|
||||
+ case 88200:
|
||||
+ gpiod_set_value_cansleep(led_gpio_1, 0);
|
||||
+ gpiod_set_value_cansleep(led_gpio_2, 1);
|
||||
+ gpiod_set_value_cansleep(led_gpio_3, 0);
|
||||
+ break;
|
||||
+ case 96000:
|
||||
+ gpiod_set_value_cansleep(led_gpio_1, 0);
|
||||
+ gpiod_set_value_cansleep(led_gpio_2, 1);
|
||||
+ gpiod_set_value_cansleep(led_gpio_3, 0);
|
||||
+ break;
|
||||
+ case 176400:
|
||||
+ gpiod_set_value_cansleep(led_gpio_1, 0);
|
||||
+ gpiod_set_value_cansleep(led_gpio_2, 0);
|
||||
+ gpiod_set_value_cansleep(led_gpio_3, 1);
|
||||
+ break;
|
||||
+ case 192000:
|
||||
+ gpiod_set_value_cansleep(led_gpio_1, 0);
|
||||
+ gpiod_set_value_cansleep(led_gpio_2, 0);
|
||||
+ gpiod_set_value_cansleep(led_gpio_3, 1);
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+const struct snd_soc_ops interlude_audio_digital_dai_ops = {
|
||||
+ .hw_params = snd_interlude_audio_hw_params,
|
||||
+};
|
||||
+
|
||||
SND_SOC_DAILINK_DEFS(justboom_digi,
|
||||
DAILINK_COMP_ARRAY(COMP_EMPTY()),
|
||||
DAILINK_COMP_ARRAY(COMP_EMPTY()),
|
||||
@@ -287,6 +370,60 @@ static struct snd_rpi_wm8804_drvdata drv
|
||||
.probe = snd_hifiberry_digi_probe,
|
||||
};
|
||||
|
||||
+SND_SOC_DAILINK_DEFS(interlude_audio_digital,
|
||||
+ DAILINK_COMP_ARRAY(COMP_EMPTY()),
|
||||
+ DAILINK_COMP_ARRAY(COMP_EMPTY()),
|
||||
+ DAILINK_COMP_ARRAY(COMP_EMPTY()));
|
||||
+
|
||||
+static int snd_interlude_audio_init(struct snd_soc_pcm_runtime *rtd)
|
||||
+{
|
||||
+ struct snd_soc_component *component = asoc_rtd_to_codec(rtd, 0)->component;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = wm8805_add_input_controls(component);
|
||||
+ if (ret != 0)
|
||||
+ pr_err("failed to add input controls");
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static struct snd_soc_dai_link snd_interlude_audio_digital_dai[] = {
|
||||
+{
|
||||
+ .name = "Interlude Audio Digital",
|
||||
+ .stream_name = "Interlude Audio Digital HiFi",
|
||||
+ .init = snd_interlude_audio_init,
|
||||
+ .ops = &interlude_audio_digital_dai_ops,
|
||||
+ SND_SOC_DAILINK_REG(interlude_audio_digital),
|
||||
+},
|
||||
+};
|
||||
+
|
||||
+
|
||||
+static int snd_interlude_audio_digital_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ if (IS_ERR(snd_clk44gpio) || IS_ERR(snd_clk48gpio))
|
||||
+ return 0;
|
||||
+
|
||||
+ custom_reset = devm_gpiod_get(&pdev->dev, "reset", GPIOD_OUT_LOW);
|
||||
+ gpiod_set_value_cansleep(custom_reset, 0);
|
||||
+ mdelay(10);
|
||||
+ gpiod_set_value_cansleep(custom_reset, 1);
|
||||
+
|
||||
+ snd_interlude_audio_digital_dai->name = "Interlude Audio Digital";
|
||||
+ snd_interlude_audio_digital_dai->stream_name = "Interlude Audio Digital HiFi";
|
||||
+ led_gpio_1 = devm_gpiod_get(&pdev->dev, "led1", GPIOD_OUT_LOW);
|
||||
+ led_gpio_2 = devm_gpiod_get(&pdev->dev, "led2", GPIOD_OUT_LOW);
|
||||
+ led_gpio_3 = devm_gpiod_get(&pdev->dev, "led3", GPIOD_OUT_LOW);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static struct snd_rpi_wm8804_drvdata drvdata_interlude_audio_digital = {
|
||||
+ .card_name = "snd_IA_Digital_Hat",
|
||||
+ .dai = snd_interlude_audio_digital_dai,
|
||||
+ .probe = snd_interlude_audio_digital_probe,
|
||||
+};
|
||||
+
|
||||
static const struct of_device_id snd_rpi_wm8804_of_match[] = {
|
||||
{ .compatible = "justboom,justboom-digi",
|
||||
.data = (void *) &drvdata_justboom_digi },
|
||||
@@ -296,6 +433,8 @@ static const struct of_device_id snd_rpi
|
||||
.data = (void *) &drvdata_allo_digione },
|
||||
{ .compatible = "hifiberry,hifiberry-digi",
|
||||
.data = (void *) &drvdata_hifiberry_digi },
|
||||
+ { .compatible = "interludeaudio,interludeaudio-digital",
|
||||
+ .data = (void *) &drvdata_interlude_audio_digital },
|
||||
{},
|
||||
};
|
||||
|
@ -0,0 +1,179 @@
|
||||
From d787ecf50d7a6ec32f8e1afcb8559600396c0f45 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Payne <ben@bluerocksoft.com>
|
||||
Date: Tue, 13 Feb 2024 14:56:28 -0800
|
||||
Subject: [PATCH 1277/1295] Add overlays needed for Interlude Audio Digital and
|
||||
Analog hats
|
||||
|
||||
Adding 2 new overlays for use with
|
||||
Interlude Audio's Digital and Analog hats
|
||||
adding descriptions for both in README
|
||||
adding changes to Makefile to include both DT's
|
||||
---
|
||||
arch/arm/boot/dts/overlays/Makefile | 2 +
|
||||
arch/arm/boot/dts/overlays/README | 12 +++
|
||||
.../interludeaudio-analog-overlay.dts | 73 +++++++++++++++++++
|
||||
.../interludeaudio-digital-overlay.dts | 49 +++++++++++++
|
||||
4 files changed, 136 insertions(+)
|
||||
create mode 100644 arch/arm/boot/dts/overlays/interludeaudio-analog-overlay.dts
|
||||
create mode 100644 arch/arm/boot/dts/overlays/interludeaudio-digital-overlay.dts
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/Makefile
|
||||
+++ b/arch/arm/boot/dts/overlays/Makefile
|
||||
@@ -131,6 +131,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
imx477.dtbo \
|
||||
imx519.dtbo \
|
||||
imx708.dtbo \
|
||||
+ interludeaudio-analog.dtbo \
|
||||
+ interludeaudio-digital.dtbo \
|
||||
iqaudio-codec.dtbo \
|
||||
iqaudio-dac.dtbo \
|
||||
iqaudio-dacplus.dtbo \
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -2708,6 +2708,18 @@ Params: rotation Mounting
|
||||
450000000 (default), 447000000, 453000000.
|
||||
|
||||
|
||||
+Name: interludeaudio-analog
|
||||
+Info: Configures Interlude Audio Analog Hat audio card
|
||||
+Load: dtoverlay=interludeaudio-analog,<param>=<val>
|
||||
+Params: gpiopin GPIO pin for codec reset
|
||||
+
|
||||
+
|
||||
+Name: interludeaudio-digital
|
||||
+Info: Configures Interlude Audio Digital Hat audio card
|
||||
+Load: dtoverlay=interludeaudio-digital
|
||||
+Params: <None>
|
||||
+
|
||||
+
|
||||
Name: iqaudio-codec
|
||||
Info: Configures the IQaudio Codec audio card
|
||||
Load: dtoverlay=iqaudio-codec
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/overlays/interludeaudio-analog-overlay.dts
|
||||
@@ -0,0 +1,73 @@
|
||||
+// Definitions for Interlude audio analog hat
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2835";
|
||||
+
|
||||
+ fragment@0 {
|
||||
+ target = <&sound>;
|
||||
+ __overlay__ {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ i2s-controller = <&i2s_clk_consumer>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ simple-audio-card,name = "snd_IA_Analog_Hat";
|
||||
+
|
||||
+ simple-audio-card,widgets =
|
||||
+ "Line", "Line In",
|
||||
+ "Line", "Line Out";
|
||||
+
|
||||
+ simple-audio-card,routing =
|
||||
+ "Line Out","AOUTA+",
|
||||
+ "Line Out","AOUTA-",
|
||||
+ "Line Out","AOUTB+",
|
||||
+ "Line Out","AOUTB-",
|
||||
+ "AINA","Line In",
|
||||
+ "AINB","Line In";
|
||||
+
|
||||
+ simple-audio-card,format = "i2s";
|
||||
+
|
||||
+ simple-audio-card,bitclock-master = <&sound_master>;
|
||||
+ simple-audio-card,frame-master = <&sound_master>;
|
||||
+
|
||||
+ simple-audio-card,cpu {
|
||||
+ sound-dai = <&i2s>;
|
||||
+ dai-tdm-slot-num = <2>;
|
||||
+ dai-tdm-slot-width = <32>;
|
||||
+ };
|
||||
+
|
||||
+ sound_master: simple-audio-card,codec {
|
||||
+ sound-dai = <&cs4271>;
|
||||
+ system-clock-frequency = <24576000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@1 {
|
||||
+ target = <&i2s_clk_consumer>;
|
||||
+ __overlay__ {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@2 {
|
||||
+ target = <&i2c1>;
|
||||
+ __overlay__ {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ cs4271: cs4271@10 {
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ compatible = "cirrus,cs4271";
|
||||
+ reg = <0x10>;
|
||||
+ status = "okay";
|
||||
+ reset-gpio = <&gpio 24 0>; /* Pin 26, active high */
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ __overrides__ {
|
||||
+ gpiopin = <&cs4271>,"reset-gpio:4";
|
||||
+ };
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/overlays/interludeaudio-digital-overlay.dts
|
||||
@@ -0,0 +1,49 @@
|
||||
+// Definitions for Interlude Audio Digital Hat
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2835";
|
||||
+
|
||||
+ fragment@0 {
|
||||
+ target = <&i2s_clk_consumer>;
|
||||
+ __overlay__ {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@1 {
|
||||
+ target = <&i2c1>;
|
||||
+ __overlay__ {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ wm8804@3b {
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ compatible = "wlf,wm8804";
|
||||
+ reg = <0x3b>;
|
||||
+ PVDD-supply = <&vdd_3v3_reg>;
|
||||
+ DVDD-supply = <&vdd_3v3_reg>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ fragment@2 {
|
||||
+ target = <&sound>;
|
||||
+ __overlay__ {
|
||||
+ compatible = "interludeaudio,interludeaudio-digital";
|
||||
+ i2s-controller = <&i2s_clk_consumer>;
|
||||
+ status = "okay";
|
||||
+ clock44-gpio = <&gpio 22 0>;
|
||||
+ clock48-gpio = <&gpio 27 0>;
|
||||
+ led1-gpio = <&gpio 13 0>;
|
||||
+ led2-gpio = <&gpio 12 0>;
|
||||
+ led3-gpio = <&gpio 6 0>;
|
||||
+ reset-gpio = <&gpio 23 0>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+};
|
@ -0,0 +1,118 @@
|
||||
From eb06d31da3e2025a2e578d8de9843e24b68137a6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ma=C3=ADra=20Canal?= <mcanal@igalia.com>
|
||||
Date: Tue, 13 Feb 2024 15:26:44 -0300
|
||||
Subject: [PATCH 1279/1295] drm/v3d: Enable V3D to use different PAGE_SIZE
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Currently, the V3D driver uses PAGE_SHIFT over the assumption that
|
||||
PAGE_SHIFT = 12, as the PAGE_SIZE = 4KB. But, the RPi 5 is using
|
||||
PAGE_SIZE = 16KB, so the MMU PAGE_SHIFT is different than the system's
|
||||
PAGE_SHIFT.
|
||||
|
||||
Enable V3D to be used in system's with any PAGE_SIZE by making sure that
|
||||
everything MMU-related uses the MMU page shift.
|
||||
|
||||
Signed-off-by: Maíra Canal <mcanal@igalia.com>
|
||||
---
|
||||
drivers/gpu/drm/v3d/v3d_bo.c | 12 ++++++------
|
||||
drivers/gpu/drm/v3d/v3d_debugfs.c | 2 +-
|
||||
drivers/gpu/drm/v3d/v3d_drv.h | 2 ++
|
||||
drivers/gpu/drm/v3d/v3d_irq.c | 2 +-
|
||||
drivers/gpu/drm/v3d/v3d_mmu.c | 2 --
|
||||
5 files changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/drivers/gpu/drm/v3d/v3d_bo.c
|
||||
+++ b/drivers/gpu/drm/v3d/v3d_bo.c
|
||||
@@ -37,7 +37,7 @@ void v3d_free_object(struct drm_gem_obje
|
||||
|
||||
mutex_lock(&v3d->bo_lock);
|
||||
v3d->bo_stats.num_allocated--;
|
||||
- v3d->bo_stats.pages_allocated -= obj->size >> PAGE_SHIFT;
|
||||
+ v3d->bo_stats.pages_allocated -= obj->size >> V3D_MMU_PAGE_SHIFT;
|
||||
mutex_unlock(&v3d->bo_lock);
|
||||
|
||||
spin_lock(&v3d->mm_lock);
|
||||
@@ -106,8 +106,8 @@ v3d_bo_create_finish(struct drm_gem_obje
|
||||
* lifetime of the BO.
|
||||
*/
|
||||
ret = drm_mm_insert_node_generic(&v3d->mm, &bo->node,
|
||||
- obj->size >> PAGE_SHIFT,
|
||||
- GMP_GRANULARITY >> PAGE_SHIFT, 0, 0);
|
||||
+ obj->size >> V3D_MMU_PAGE_SHIFT,
|
||||
+ GMP_GRANULARITY >> V3D_MMU_PAGE_SHIFT, 0, 0);
|
||||
spin_unlock(&v3d->mm_lock);
|
||||
if (ret)
|
||||
return ret;
|
||||
@@ -115,7 +115,7 @@ v3d_bo_create_finish(struct drm_gem_obje
|
||||
/* Track stats for /debug/dri/n/bo_stats. */
|
||||
mutex_lock(&v3d->bo_lock);
|
||||
v3d->bo_stats.num_allocated++;
|
||||
- v3d->bo_stats.pages_allocated += obj->size >> PAGE_SHIFT;
|
||||
+ v3d->bo_stats.pages_allocated += obj->size >> V3D_MMU_PAGE_SHIFT;
|
||||
mutex_unlock(&v3d->bo_lock);
|
||||
|
||||
v3d_mmu_insert_ptes(bo);
|
||||
@@ -183,7 +183,7 @@ int v3d_create_bo_ioctl(struct drm_devic
|
||||
if (IS_ERR(bo))
|
||||
return PTR_ERR(bo);
|
||||
|
||||
- args->offset = bo->node.start << PAGE_SHIFT;
|
||||
+ args->offset = bo->node.start << V3D_MMU_PAGE_SHIFT;
|
||||
|
||||
ret = drm_gem_handle_create(file_priv, &bo->base.base, &args->handle);
|
||||
drm_gem_object_put(&bo->base.base);
|
||||
@@ -228,7 +228,7 @@ int v3d_get_bo_offset_ioctl(struct drm_d
|
||||
}
|
||||
bo = to_v3d_bo(gem_obj);
|
||||
|
||||
- args->offset = bo->node.start << PAGE_SHIFT;
|
||||
+ args->offset = bo->node.start << V3D_MMU_PAGE_SHIFT;
|
||||
|
||||
drm_gem_object_put(gem_obj);
|
||||
return 0;
|
||||
--- a/drivers/gpu/drm/v3d/v3d_debugfs.c
|
||||
+++ b/drivers/gpu/drm/v3d/v3d_debugfs.c
|
||||
@@ -220,7 +220,7 @@ static int v3d_debugfs_bo_stats(struct s
|
||||
seq_printf(m, "allocated bos: %d\n",
|
||||
v3d->bo_stats.num_allocated);
|
||||
seq_printf(m, "allocated bo size (kb): %ld\n",
|
||||
- (long)v3d->bo_stats.pages_allocated << (PAGE_SHIFT - 10));
|
||||
+ (long)v3d->bo_stats.pages_allocated << (V3D_MMU_PAGE_SHIFT - 10));
|
||||
mutex_unlock(&v3d->bo_lock);
|
||||
|
||||
return 0;
|
||||
--- a/drivers/gpu/drm/v3d/v3d_drv.h
|
||||
+++ b/drivers/gpu/drm/v3d/v3d_drv.h
|
||||
@@ -19,6 +19,8 @@ struct reset_control;
|
||||
|
||||
#define GMP_GRANULARITY (128 * 1024)
|
||||
|
||||
+#define V3D_MMU_PAGE_SHIFT 12
|
||||
+
|
||||
#define V3D_MAX_QUEUES (V3D_CACHE_CLEAN + 1)
|
||||
|
||||
static inline char *
|
||||
--- a/drivers/gpu/drm/v3d/v3d_irq.c
|
||||
+++ b/drivers/gpu/drm/v3d/v3d_irq.c
|
||||
@@ -70,7 +70,7 @@ v3d_overflow_mem_work(struct work_struct
|
||||
list_add_tail(&bo->unref_head, &v3d->bin_job->render->unref_list);
|
||||
spin_unlock_irqrestore(&v3d->job_lock, irqflags);
|
||||
|
||||
- V3D_CORE_WRITE(0, V3D_PTB_BPOA, bo->node.start << PAGE_SHIFT);
|
||||
+ V3D_CORE_WRITE(0, V3D_PTB_BPOA, bo->node.start << V3D_MMU_PAGE_SHIFT);
|
||||
V3D_CORE_WRITE(0, V3D_PTB_BPOS, obj->size);
|
||||
|
||||
out:
|
||||
--- a/drivers/gpu/drm/v3d/v3d_mmu.c
|
||||
+++ b/drivers/gpu/drm/v3d/v3d_mmu.c
|
||||
@@ -21,8 +21,6 @@
|
||||
#include "v3d_drv.h"
|
||||
#include "v3d_regs.h"
|
||||
|
||||
-#define V3D_MMU_PAGE_SHIFT 12
|
||||
-
|
||||
/* Note: All PTEs for the 1MB superpage must be filled with the
|
||||
* superpage bit set.
|
||||
*/
|
@ -0,0 +1,25 @@
|
||||
From aa00918b9562daa3b776600f48d8264b20fd54f6 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Sun, 18 Feb 2024 15:31:50 +0000
|
||||
Subject: [PATCH 1280/1295] overlays: adau1977-adc: Replace use of i2c label
|
||||
|
||||
The label 'i2c' is no longer created by the firmware - i2c_arm or
|
||||
i2c1 should be used instead. Replace the last occurrence of &i2c with
|
||||
&i2c1.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
|
||||
@@ -6,7 +6,7 @@
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
- target = <&i2c>;
|
||||
+ target = <&i2c1>;
|
||||
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
@ -0,0 +1,24 @@
|
||||
From afd5f659b0453e4c710ce5cf74c577563ff16239 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Scheller <andrew.scheller@raspberrypi.com>
|
||||
Date: Tue, 20 Feb 2024 17:53:03 +0000
|
||||
Subject: [PATCH 1281/1295] Add IQaudio CodecZero to hat_map.dts
|
||||
|
||||
Fixes https://github.com/raspberrypi/Pi-Codec/issues/9
|
||||
---
|
||||
arch/arm/boot/dts/overlays/hat_map.dts | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/hat_map.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/hat_map.dts
|
||||
@@ -6,6 +6,11 @@
|
||||
overlay = "iqaudio-codec";
|
||||
};
|
||||
|
||||
+ iqaudio-pi-codeczero {
|
||||
+ uuid = [ e15c739c 877d 4e29 ab36 4dc73c21127c ];
|
||||
+ overlay = "iqaudio-codec";
|
||||
+ };
|
||||
+
|
||||
pisound {
|
||||
uuid = [ a7ee5d28 da03 41f5 bbd7 20438a4bec5d ];
|
||||
overlay = "pisound";
|
@ -0,0 +1,82 @@
|
||||
From d4acd8b7ea890c01453cdcf9b04a999ca04dfd2a Mon Sep 17 00:00:00 2001
|
||||
From: j-schambacher <joerg@hifiberry.com>
|
||||
Date: Wed, 28 Feb 2024 11:25:14 +0100
|
||||
Subject: [PATCH 1282/1295] ASOc: Add HiFiBerry DAC8X to the simple card driver
|
||||
|
||||
Defines the settings for the 8 channel version of the standard
|
||||
DAC by overwriting the number of channels in the DAI defs.
|
||||
It can run in 8ch mode only on PI5 using the 4 lane data output
|
||||
of the designware I2S0 module.
|
||||
|
||||
Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
sound/soc/bcm/Kconfig | 5 +++--
|
||||
sound/soc/bcm/rpi-simple-soundcard.c | 33 ++++++++++++++++++++++++++++
|
||||
2 files changed, 36 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/sound/soc/bcm/Kconfig
|
||||
+++ b/sound/soc/bcm/Kconfig
|
||||
@@ -40,11 +40,12 @@ config SND_BCM2708_SOC_GOOGLEVOICEHAT_SO
|
||||
Say Y or M if you want to add support for voiceHAT soundcard.
|
||||
|
||||
config SND_BCM2708_SOC_HIFIBERRY_DAC
|
||||
- tristate "Support for HifiBerry DAC"
|
||||
+ tristate "Support for HifiBerry DAC and DAC8X"
|
||||
select SND_SOC_PCM5102A
|
||||
select SND_RPI_SIMPLE_SOUNDCARD
|
||||
help
|
||||
- Say Y or M if you want to add support for HifiBerry DAC.
|
||||
+ Say Y or M if you want to add support for HifiBerry DAC and DAC8X.
|
||||
+ Note: DAC8X only works on PI5
|
||||
|
||||
config SND_BCM2708_SOC_HIFIBERRY_DACPLUS
|
||||
tristate "Support for HifiBerry DAC+"
|
||||
--- a/sound/soc/bcm/rpi-simple-soundcard.c
|
||||
+++ b/sound/soc/bcm/rpi-simple-soundcard.c
|
||||
@@ -316,6 +316,37 @@ static struct snd_rpi_simple_drvdata drv
|
||||
.dai = snd_hifiberry_dac_dai,
|
||||
};
|
||||
|
||||
+static int hifiberry_dac8x_init(struct snd_soc_pcm_runtime *rtd)
|
||||
+{
|
||||
+ struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
|
||||
+
|
||||
+ /* override the defaults to reflect 4 x PCM5102A on the card
|
||||
+ * and limit the sample rate to 192ksps
|
||||
+ */
|
||||
+ codec_dai->driver->playback.channels_max = 8;
|
||||
+ codec_dai->driver->playback.rates = SNDRV_PCM_RATE_8000_192000;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct snd_soc_dai_link snd_hifiberry_dac8x_dai[] = {
|
||||
+ {
|
||||
+ .name = "HifiBerry DAC8x",
|
||||
+ .stream_name = "HifiBerry DAC8x HiFi",
|
||||
+ .dai_fmt = SND_SOC_DAIFMT_I2S |
|
||||
+ SND_SOC_DAIFMT_NB_NF |
|
||||
+ SND_SOC_DAIFMT_CBS_CFS,
|
||||
+ .init = hifiberry_dac8x_init,
|
||||
+ SND_SOC_DAILINK_REG(hifiberry_dac),
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static struct snd_rpi_simple_drvdata drvdata_hifiberry_dac8x = {
|
||||
+ .card_name = "snd_rpi_hifiberry_dac8x",
|
||||
+ .dai = snd_hifiberry_dac8x_dai,
|
||||
+ .fixed_bclk_ratio = 64,
|
||||
+};
|
||||
+
|
||||
SND_SOC_DAILINK_DEFS(dionaudio_kiwi,
|
||||
DAILINK_COMP_ARRAY(COMP_EMPTY()),
|
||||
DAILINK_COMP_ARRAY(COMP_CODEC("pcm1794a-codec", "pcm1794a-hifi")),
|
||||
@@ -417,6 +448,8 @@ static const struct of_device_id snd_rpi
|
||||
.data = (void *) &drvdata_hifiberry_amp3 },
|
||||
{ .compatible = "hifiberry,hifiberry-dac",
|
||||
.data = (void *) &drvdata_hifiberry_dac },
|
||||
+ { .compatible = "hifiberry,hifiberry-dac8x",
|
||||
+ .data = (void *) &drvdata_hifiberry_dac8x },
|
||||
{ .compatible = "dionaudio,dionaudio-kiwi",
|
||||
.data = (void *) &drvdata_dionaudio_kiwi },
|
||||
{ .compatible = "rpi,rpi-dac", &drvdata_rpi_dac},
|
@ -0,0 +1,113 @@
|
||||
From 813135a7ff3f0c2b91dc06a5b3f8deac15570466 Mon Sep 17 00:00:00 2001
|
||||
From: j-schambacher <joerg@hifiberry.com>
|
||||
Date: Wed, 28 Feb 2024 11:34:05 +0100
|
||||
Subject: [PATCH 1283/1295] Overlays: Add definitions for HiFiBerry 8 channel
|
||||
DAC8X
|
||||
|
||||
Dedicated overlay claiming all 4 data lanes of the designware
|
||||
I2S0 module to drive 4x PCM5102. THe devices share BCLK and
|
||||
LRCLK, therefore all outputs will always run at the same
|
||||
samplerate and format.
|
||||
|
||||
Compatible only with PI5!
|
||||
|
||||
Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/Makefile | 1 +
|
||||
arch/arm/boot/dts/overlays/README | 6 +++
|
||||
.../dts/overlays/hifiberry-dac8x-overlay.dts | 50 +++++++++++++++++++
|
||||
arch/arm/boot/dts/overlays/overlay_map.dts | 4 ++
|
||||
4 files changed, 61 insertions(+)
|
||||
create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dac8x-overlay.dts
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/Makefile
|
||||
+++ b/arch/arm/boot/dts/overlays/Makefile
|
||||
@@ -88,6 +88,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
hifiberry-amp3.dtbo \
|
||||
hifiberry-amp4pro.dtbo \
|
||||
hifiberry-dac.dtbo \
|
||||
+ hifiberry-dac8x.dtbo \
|
||||
hifiberry-dacplus.dtbo \
|
||||
hifiberry-dacplusadc.dtbo \
|
||||
hifiberry-dacplusadcpro.dtbo \
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -1772,6 +1772,12 @@ Load: dtoverlay=hifiberry-dac
|
||||
Params: <None>
|
||||
|
||||
|
||||
+Name: hifiberry-dac8x
|
||||
+Info: Configures the HifiBerry DAC8X audio cards (only on PI5)
|
||||
+Load: dtoverlay=hifiberry-dac8x
|
||||
+Params: <None>
|
||||
+
|
||||
+
|
||||
Name: hifiberry-dacplus
|
||||
Info: Configures the HifiBerry DAC+ audio card
|
||||
Load: dtoverlay=hifiberry-dacplus,<param>=<val>
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/overlays/hifiberry-dac8x-overlay.dts
|
||||
@@ -0,0 +1,50 @@
|
||||
+// Definitions for HiFiBerry DAC8x
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2712";
|
||||
+
|
||||
+ fragment@0 {
|
||||
+ target = <&gpio>;
|
||||
+ __overlay__ {
|
||||
+ rp1_i2s0_dac8x: rp1_i2s0_dac8x {
|
||||
+ function = "i2s0";
|
||||
+ pins = "gpio18", "gpio19", "gpio21",
|
||||
+ "gpio23", "gpio25", "gpio27";
|
||||
+ bias-disable;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@1 {
|
||||
+ target = <&i2s_clk_producer>;
|
||||
+ __overlay__ {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&rp1_i2s0_dac8x>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@2 {
|
||||
+ target-path = "/";
|
||||
+ __overlay__ {
|
||||
+ pcm5102a-codec {
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ compatible = "ti,pcm5102a";
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@3 {
|
||||
+ target = <&sound>;
|
||||
+ __overlay__ {
|
||||
+ compatible = "hifiberry,hifiberry-dac8x";
|
||||
+ i2s-controller = <&i2s_clk_producer>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/overlays/overlay_map.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/overlay_map.dts
|
||||
@@ -48,6 +48,10 @@
|
||||
bcm2712;
|
||||
};
|
||||
|
||||
+ hifiberry-dac8x {
|
||||
+ bcm2712;
|
||||
+ };
|
||||
+
|
||||
highperi {
|
||||
bcm2711;
|
||||
};
|
@ -0,0 +1,31 @@
|
||||
From c0169f2c197d005aff8acfbc618de6e7f6b1ab94 Mon Sep 17 00:00:00 2001
|
||||
From: Florian Wesch <fw@dividuum.de>
|
||||
Date: Tue, 5 Mar 2024 15:17:56 +0100
|
||||
Subject: [PATCH 1285/1295] vc4/hvs: Fix lbm size calculation for yuv (#6012)
|
||||
|
||||
The code was reducing the number of components by one when we were not
|
||||
blending with alpha. But that only makes sense if the components include
|
||||
alpha.
|
||||
|
||||
For YUV, we were reducing the number of components for Y from one to zero
|
||||
which resulted in no lbm space being allocated.
|
||||
|
||||
Fixes: https://github.com/raspberrypi/linux/issues/5912
|
||||
|
||||
Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
Co-authored-by: Dom Cobley <popcornmix@gmail.com>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_plane.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_plane.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
|
||||
@@ -733,7 +733,7 @@ static unsigned int vc4_lbm_channel_size
|
||||
if (!components)
|
||||
return 0;
|
||||
|
||||
- if (state->alpha != DRM_BLEND_ALPHA_OPAQUE)
|
||||
+ if (state->alpha != DRM_BLEND_ALPHA_OPAQUE && info->has_alpha)
|
||||
components -= 1;
|
||||
|
||||
words = width * wpc * components;
|
@ -0,0 +1,41 @@
|
||||
From 50da59d237df59b38c5e3c375b3df8fabbda1069 Mon Sep 17 00:00:00 2001
|
||||
From: Eng33 <eng33@waveshare.net>
|
||||
Date: Fri, 8 Mar 2024 18:36:37 +0800
|
||||
Subject: [PATCH 1286/1295] Driver:add waveshare 4inch dsi lcd (C) driver
|
||||
|
||||
Signed-off-by: Eng33 <eng33@waveshare.net>
|
||||
---
|
||||
drivers/gpu/drm/panel/panel-waveshare-dsi.c | 15 +++++++++++++++
|
||||
1 file changed, 15 insertions(+)
|
||||
|
||||
--- a/drivers/gpu/drm/panel/panel-waveshare-dsi.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-waveshare-dsi.c
|
||||
@@ -138,6 +138,18 @@ static const struct drm_display_mode ws_
|
||||
.vtotal = 1480 + 60 + 60 + 60,
|
||||
};
|
||||
|
||||
+static const struct drm_display_mode ws_panel_4_mode = {
|
||||
+ .clock = 50000,
|
||||
+ .hdisplay = 720,
|
||||
+ .hsync_start = 720 + 32,
|
||||
+ .hsync_end = 720 + 32 + 200,
|
||||
+ .htotal = 720 + 32 + 200 + 120,
|
||||
+ .vdisplay = 720,
|
||||
+ .vsync_start = 720 + 8,
|
||||
+ .vsync_end = 720 + 8 + 4,
|
||||
+ .vtotal = 720 + 8 + 4 + 16,
|
||||
+};
|
||||
+
|
||||
static struct ws_panel *panel_to_ts(struct drm_panel *panel)
|
||||
{
|
||||
return container_of(panel, struct ws_panel, base);
|
||||
@@ -399,6 +411,9 @@ static const struct of_device_id ws_pane
|
||||
.compatible = "waveshare,11.9inch-panel",
|
||||
.data = &ws_panel_11_9_mode,
|
||||
}, {
|
||||
+ .compatible = "waveshare,4inch-panel",
|
||||
+ .data = &ws_panel_4_mode,
|
||||
+ }, {
|
||||
/* sentinel */
|
||||
}
|
||||
};
|
@ -0,0 +1,22 @@
|
||||
From bb2f912c94d11a0f0b5f13c91793fa9f79eb92aa Mon Sep 17 00:00:00 2001
|
||||
From: Eng33 <eng33@waveshare.net>
|
||||
Date: Fri, 8 Mar 2024 18:37:03 +0800
|
||||
Subject: [PATCH 1287/1295] Dtoverlay:add waveshare 4inch dsi lcd (C) dtoverlay
|
||||
|
||||
Signed-off-by: Eng33 <eng33@waveshare.net>
|
||||
---
|
||||
.../boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts
|
||||
@@ -112,6 +112,9 @@
|
||||
<&touch>, "touchscreen-size-y:0=1480",
|
||||
<&touch>, "touchscreen-inverted-x?",
|
||||
<&touch>, "touchscreen-swapped-x-y?";
|
||||
+ 4_0_inchC = <&panel>, "compatible=waveshare,4inch-panel",
|
||||
+ <&touch>, "touchscreen-size-x:0=720",
|
||||
+ <&touch>, "touchscreen-size-y:0=720";
|
||||
i2c1 = <&i2c_frag>, "target:0=",<&i2c1>,
|
||||
<0>, "-3-4+5";
|
||||
disable_touch = <&touch>, "status=disabled";
|
@ -0,0 +1,22 @@
|
||||
From 29cc64d7d94f9a6ee0e97e8009b832514d2525e0 Mon Sep 17 00:00:00 2001
|
||||
From: Eng33 <eng33@waveshare.net>
|
||||
Date: Fri, 8 Mar 2024 18:38:33 +0800
|
||||
Subject: [PATCH 1288/1295] Dtoverlay:fix waveshare 11.9inch touch orientation
|
||||
error
|
||||
|
||||
Signed-off-by: Eng33 <eng33@waveshare.net>
|
||||
---
|
||||
.../boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts
|
||||
@@ -108,8 +108,6 @@
|
||||
<&touch>, "touchscreen-inverted-x?",
|
||||
<&touch>, "touchscreen-swapped-x-y?";
|
||||
11_9_inch = <&panel>, "compatible=waveshare,11.9inch-panel",
|
||||
- <&touch>, "touchscreen-size-x:0=320",
|
||||
- <&touch>, "touchscreen-size-y:0=1480",
|
||||
<&touch>, "touchscreen-inverted-x?",
|
||||
<&touch>, "touchscreen-swapped-x-y?";
|
||||
4_0_inchC = <&panel>, "compatible=waveshare,4inch-panel",
|
@ -0,0 +1,21 @@
|
||||
From 8db8a2b856a24dd30b201c9af3238cedaf5f0c58 Mon Sep 17 00:00:00 2001
|
||||
From: Eng33 <eng33@waveshare.net>
|
||||
Date: Mon, 11 Mar 2024 10:00:23 +0800
|
||||
Subject: [PATCH 1289/1295] Dtoverlay:Add waveshare 4inch dsi lcd (C)
|
||||
parameters to the README
|
||||
|
||||
Signed-off-by: Eng33 <eng33@waveshare.net>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/README | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -5011,6 +5011,7 @@ Load: dtoverlay=vc4-kms-dsi-waveshare-
|
||||
Params: 2_8_inch 2.8" 480x640
|
||||
3_4_inch 3.4" 800x800 round
|
||||
4_0_inch 4.0" 480x800
|
||||
+ 4_0_inchC 4.0" 720x720
|
||||
7_0_inchC 7.0" C 1024x600
|
||||
7_9_inch 7.9" 400x1280
|
||||
8_0_inch 8.0" 1280x800
|
@ -0,0 +1,223 @@
|
||||
From 9e31e8ce44ef11cabcb1b95830e1fdd8a9655ad3 Mon Sep 17 00:00:00 2001
|
||||
From: j-schambacher <joerg@hifiberry.com>
|
||||
Date: Mon, 11 Mar 2024 15:32:28 +0100
|
||||
Subject: [PATCH 1290/1295] Overlays:Add specific clk-producer/-consumer
|
||||
overlays for Hifiberry DAC+
|
||||
|
||||
As the easy switching of the I2S module bewteen clock producer/consumer
|
||||
on the PI5 is not possible, two specific DT-overlays are introduced.
|
||||
The DAC+PRO boards with onboard clocks use the -PRO overlay, the boards
|
||||
without oscillators the -STD version.
|
||||
The "hifiberry-dacplus,slave" parameter in the -STD overlay disables
|
||||
the automatic clock detection inside the hifiberry-dacplus driver.
|
||||
|
||||
The former hifiberry-dacplus overlay is kept for compatibility but
|
||||
will be deprecated.
|
||||
|
||||
Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/Makefile | 2 +
|
||||
arch/arm/boot/dts/overlays/README | 42 ++++++++++++
|
||||
.../hifiberry-dacplus-pro-overlay.dts | 64 ++++++++++++++++++
|
||||
.../hifiberry-dacplus-std-overlay.dts | 65 +++++++++++++++++++
|
||||
4 files changed, 173 insertions(+)
|
||||
create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-pro-overlay.dts
|
||||
create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-std-overlay.dts
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/Makefile
|
||||
+++ b/arch/arm/boot/dts/overlays/Makefile
|
||||
@@ -90,6 +90,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
hifiberry-dac.dtbo \
|
||||
hifiberry-dac8x.dtbo \
|
||||
hifiberry-dacplus.dtbo \
|
||||
+ hifiberry-dacplus-pro.dtbo \
|
||||
+ hifiberry-dacplus-std.dtbo \
|
||||
hifiberry-dacplusadc.dtbo \
|
||||
hifiberry-dacplusadcpro.dtbo \
|
||||
hifiberry-dacplusdsp.dtbo \
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -1801,6 +1801,48 @@ Params: 24db_digital_gain Allow ga
|
||||
are switched off at all times.
|
||||
|
||||
|
||||
+Name: hifiberry-dacplus-pro
|
||||
+Info: Configures the HifiBerry DAC+ PRO audio card (onboard clocks)
|
||||
+Load: dtoverlay=hifiberry-dacplus-pro,<param>=<val>
|
||||
+Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
|
||||
+ Digital volume control. Enable with
|
||||
+ "dtoverlay=hifiberry-dacplus,24db_digital_gain"
|
||||
+ (The default behaviour is that the Digital
|
||||
+ volume control is limited to a maximum of
|
||||
+ 0dB. ie. it can attenuate but not provide
|
||||
+ gain. For most users, this will be desired
|
||||
+ as it will prevent clipping. By appending
|
||||
+ the 24dB_digital_gain parameter, the Digital
|
||||
+ volume control will allow up to 24dB of
|
||||
+ gain. If this parameter is enabled, it is the
|
||||
+ responsibility of the user to ensure that
|
||||
+ the Digital volume control is set to a value
|
||||
+ that does not result in clipping/distortion!)
|
||||
+ leds_off If set to 'true' the onboard indicator LEDs
|
||||
+ are switched off at all times.
|
||||
+
|
||||
+
|
||||
+Name: hifiberry-dacplus-std
|
||||
+Info: Configures the HifiBerry DAC+ standard audio card (no onboard clocks)
|
||||
+Load: dtoverlay=hifiberry-dacplus-std,<param>=<val>
|
||||
+Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
|
||||
+ Digital volume control. Enable with
|
||||
+ "dtoverlay=hifiberry-dacplus,24db_digital_gain"
|
||||
+ (The default behaviour is that the Digital
|
||||
+ volume control is limited to a maximum of
|
||||
+ 0dB. ie. it can attenuate but not provide
|
||||
+ gain. For most users, this will be desired
|
||||
+ as it will prevent clipping. By appending
|
||||
+ the 24dB_digital_gain parameter, the Digital
|
||||
+ volume control will allow up to 24dB of
|
||||
+ gain. If this parameter is enabled, it is the
|
||||
+ responsibility of the user to ensure that
|
||||
+ the Digital volume control is set to a value
|
||||
+ that does not result in clipping/distortion!)
|
||||
+ leds_off If set to 'true' the onboard indicator LEDs
|
||||
+ are switched off at all times.
|
||||
+
|
||||
+
|
||||
Name: hifiberry-dacplusadc
|
||||
Info: Configures the HifiBerry DAC+ADC audio card
|
||||
Load: dtoverlay=hifiberry-dacplusadc,<param>=<val>
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-pro-overlay.dts
|
||||
@@ -0,0 +1,64 @@
|
||||
+// Definitions for HiFiBerry DAC+ PRO, with onboard clocks
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2835";
|
||||
+
|
||||
+ fragment@0 {
|
||||
+ target-path = "/";
|
||||
+ __overlay__ {
|
||||
+ dacpro_osc: dacpro_osc {
|
||||
+ compatible = "hifiberry,dacpro-clk";
|
||||
+ #clock-cells = <0>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ frag1: fragment@1 {
|
||||
+ target = <&i2s_clk_consumer>;
|
||||
+ __overlay__ {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@2 {
|
||||
+ target = <&i2c1>;
|
||||
+ __overlay__ {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcm5122@4d {
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ compatible = "ti,pcm5122";
|
||||
+ reg = <0x4d>;
|
||||
+ clocks = <&dacpro_osc>;
|
||||
+ AVDD-supply = <&vdd_3v3_reg>;
|
||||
+ DVDD-supply = <&vdd_3v3_reg>;
|
||||
+ CPVDD-supply = <&vdd_3v3_reg>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ hpamp: hpamp@60 {
|
||||
+ compatible = "ti,tpa6130a2";
|
||||
+ reg = <0x60>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@3 {
|
||||
+ target = <&sound>;
|
||||
+ hifiberry_dacplus: __overlay__ {
|
||||
+ compatible = "hifiberry,hifiberry-dacplus";
|
||||
+ i2s-controller = <&i2s_clk_consumer>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ __overrides__ {
|
||||
+ 24db_digital_gain =
|
||||
+ <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
|
||||
+ leds_off = <&hifiberry_dacplus>,"hifiberry-dacplus,leds_off?";
|
||||
+ };
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-std-overlay.dts
|
||||
@@ -0,0 +1,65 @@
|
||||
+// Definitions for HiFiBerry DAC+ Standard w/o onboard clocks
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "brcm,bcm2835";
|
||||
+
|
||||
+ fragment@0 {
|
||||
+ target-path = "/";
|
||||
+ __overlay__ {
|
||||
+ dacpro_osc: dacpro_osc {
|
||||
+ compatible = "hifiberry,dacpro-clk";
|
||||
+ #clock-cells = <0>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@1 {
|
||||
+ target = <&i2s_clk_producer>;
|
||||
+ __overlay__ {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@2 {
|
||||
+ target = <&i2c1>;
|
||||
+ __overlay__ {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pcm5122@4d {
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ compatible = "ti,pcm5122";
|
||||
+ reg = <0x4d>;
|
||||
+ clocks = <&dacpro_osc>;
|
||||
+ AVDD-supply = <&vdd_3v3_reg>;
|
||||
+ DVDD-supply = <&vdd_3v3_reg>;
|
||||
+ CPVDD-supply = <&vdd_3v3_reg>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ hpamp: hpamp@60 {
|
||||
+ compatible = "ti,tpa6130a2";
|
||||
+ reg = <0x60>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fragment@3 {
|
||||
+ target = <&sound>;
|
||||
+ hifiberry_dacplus: __overlay__ {
|
||||
+ compatible = "hifiberry,hifiberry-dacplus";
|
||||
+ i2s-controller = <&i2s_clk_producer>;
|
||||
+ hifiberry-dacplus,slave;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ __overrides__ {
|
||||
+ 24db_digital_gain =
|
||||
+ <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
|
||||
+ leds_off = <&hifiberry_dacplus>,"hifiberry-dacplus,leds_off?";
|
||||
+ };
|
||||
+};
|
@ -0,0 +1,96 @@
|
||||
From fae2848e87c2696d1eeaeb3f449ad871874b699f Mon Sep 17 00:00:00 2001
|
||||
From: j-schambacher <joerg@hifiberry.com>
|
||||
Date: Tue, 12 Mar 2024 10:59:48 +0100
|
||||
Subject: [PATCH 1291/1295] overlays:hat_map: Add Hifiberry cards
|
||||
|
||||
Adds all available Hifberry cards' UUIDs to the hat_map file.
|
||||
|
||||
Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/hat_map.dts | 75 ++++++++++++++++++++++++++
|
||||
1 file changed, 75 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/hat_map.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/hat_map.dts
|
||||
@@ -1,6 +1,81 @@
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
+ hifiberry-amp100-1 {
|
||||
+ uuid = [ 5eb863b8 12f9 41ad 978f 4cee1b3eca62 ];
|
||||
+ overlay = "hifiberry-amp100";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-amp100-2 {
|
||||
+ uuid = [ b1a57dbe 8b52 447f 939e 1baf72157d79 ];
|
||||
+ overlay = "hifiberry-amp100";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-amp4pro {
|
||||
+ uuid = [ 3619722a c92d 4092 95bd 493a2903e933 ];
|
||||
+ overlay = "hifiberry-amp4pro";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-amp4 {
|
||||
+ uuid = [ fcb6ec42 a182 419d a314 7eeae416f608 ];
|
||||
+ overlay = "hifiberry-dacplus-std";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-dac2proadc {
|
||||
+ uuid = [ 30660215 dbb2 4c57 953f 099370b63e2e ];
|
||||
+ overlay = "hifiberry-dacplusadcpro";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-dac2hd {
|
||||
+ uuid = [ 482ad277 5586 480c 88e7 85ae89c4e501 ];
|
||||
+ overlay = "hifiberry-dacplushd";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-dac2pro {
|
||||
+ uuid = [ ebf9cfc4 6d77 4880 89fd 353690467dfc ];
|
||||
+ overlay = "hifiberry-dacplus-pro";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-dac8x {
|
||||
+ uuid = [ f65985f9 5354 4457 ae3b 3da39ba2cf6d ];
|
||||
+ overlay = "hifiberry-dac8x";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-dacplus-amp2-1 {
|
||||
+ uuid = [ 81cac43d 27c6 4a1e a0b2 c70b4e608ab6 ];
|
||||
+ overlay = "hifiberry-dacplus-std";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-dacplus-amp2-2 {
|
||||
+ uuid = [ ef586afc 2efa 47a0 be2e 95a7d952fe98 ];
|
||||
+ overlay = "hifiberry-dacplus-std";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-digiplus-pro {
|
||||
+ uuid = [ 2154f80b 0f92 45e4 96db c1643ec2b46b ];
|
||||
+ overlay = "hifiberry-digi-pro";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-dacplusadcpro {
|
||||
+ uuid = [ 36e3d3da 1ed9 468b aea3 cd165f6820f0 ];
|
||||
+ overlay = "hifiberry-dacplusadcpro";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-digi2pro {
|
||||
+ uuid = [ 5af941bb 4dcf 4eac 82a8 e36e84fcabef ];
|
||||
+ overlay = "hifiberry-digi-pro";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-digi2standard {
|
||||
+ uuid = [ 7c980a0e 9d15 40af 9f40 bddfbd3aee8c ];
|
||||
+ overlay = "hifiberry-digi";
|
||||
+ };
|
||||
+
|
||||
+ hifiberry-dsp2x4 {
|
||||
+ uuid = [ 8f287583 429d 4206 a751 862264bbda63 ];
|
||||
+ overlay = "hifiberry-dacplus-dsp";
|
||||
+ };
|
||||
+
|
||||
iqaudio-pi-codecplus {
|
||||
uuid = [ dc1c9594 c1ab 4c6c acda a88dc59a3c5b ];
|
||||
overlay = "iqaudio-codec";
|
@ -0,0 +1,31 @@
|
||||
From f87bf7dfa65cce1d46800c0769351fef59abba55 Mon Sep 17 00:00:00 2001
|
||||
From: j-schambacher <joerg@hifiberry.com>
|
||||
Date: Wed, 13 Mar 2024 10:31:18 +0100
|
||||
Subject: [PATCH 1292/1295] ASoC: Fix 16bit sample support for Hifiberry
|
||||
DACplusADC
|
||||
|
||||
Same issue as #5919.
|
||||
'width' needs to be set independent of clocking mode.
|
||||
|
||||
Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
sound/soc/bcm/hifiberry_dacplusadc.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
--- a/sound/soc/bcm/hifiberry_dacplusadc.c
|
||||
+++ b/sound/soc/bcm/hifiberry_dacplusadc.c
|
||||
@@ -229,13 +229,11 @@ static int snd_rpi_hifiberry_dacplusadc_
|
||||
int ret = 0;
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
int channels = params_channels(params);
|
||||
- int width = 32;
|
||||
+ int width = snd_pcm_format_width(params_format(params));
|
||||
|
||||
if (snd_rpi_hifiberry_is_dacpro) {
|
||||
struct snd_soc_component *component = asoc_rtd_to_codec(rtd, 0)->component;
|
||||
|
||||
- width = snd_pcm_format_physical_width(params_format(params));
|
||||
-
|
||||
snd_rpi_hifiberry_dacplusadc_set_sclk(component,
|
||||
params_rate(params));
|
||||
|
@ -0,0 +1,79 @@
|
||||
From 5d1972f99f893ac9394d2a795a3b21385b9e34a5 Mon Sep 17 00:00:00 2001
|
||||
From: j-schambacher <joerg@hifiberry.com>
|
||||
Date: Wed, 13 Mar 2024 10:11:27 +0100
|
||||
Subject: [PATCH 1293/1295] overlays: Sets i2s_clk_producer as default for
|
||||
Hifiberry DACplusADC
|
||||
|
||||
As we have never released a (standard) DACplusADC board with onboard
|
||||
clocks, we can simply use a fixed setup avoiding incompatibilities
|
||||
with Pi5 during driver init. Setting 'hifiberry-dacplusadc,slave' in
|
||||
the overlays disables the failing clock probing mechanism.
|
||||
|
||||
Removes 'slave' parameter description from README which is still
|
||||
supported but not needed.
|
||||
|
||||
Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/README | 4 +---
|
||||
.../dts/overlays/hifiberry-dacplusadc-overlay.dts | 12 +++++-------
|
||||
2 files changed, 6 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -1773,7 +1773,7 @@ Params: <None>
|
||||
|
||||
|
||||
Name: hifiberry-dac8x
|
||||
-Info: Configures the HifiBerry DAC8X audio cards (only on PI5)
|
||||
+Info: Configures the HifiBerry DAC8X audio cards (only on Pi5)
|
||||
Load: dtoverlay=hifiberry-dac8x
|
||||
Params: <None>
|
||||
|
||||
@@ -1860,8 +1860,6 @@ Params: 24db_digital_gain Allow ga
|
||||
responsibility of the user to ensure that
|
||||
the Digital volume control is set to a value
|
||||
that does not result in clipping/distortion!)
|
||||
- slave Force DAC+ADC into slave mode, using Pi as
|
||||
- master for bit clock and frame clock.
|
||||
leds_off If set to 'true' the onboard indicator LEDs
|
||||
are switched off at all times.
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
|
||||
@@ -1,4 +1,4 @@
|
||||
-// Definitions for HiFiBerry DAC+ADC
|
||||
+// Definitions for HiFiBerry DAC+ADC, no onboard clocks
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
- frag1: fragment@1 {
|
||||
- target = <&i2s_clk_consumer>;
|
||||
+ fragment@1 {
|
||||
+ target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -58,7 +58,8 @@
|
||||
target = <&sound>;
|
||||
hifiberry_dacplusadc: __overlay__ {
|
||||
compatible = "hifiberry,hifiberry-dacplusadc";
|
||||
- i2s-controller = <&i2s_clk_consumer>;
|
||||
+ i2s-controller = <&i2s_clk_producer>;
|
||||
+ hifiberry-dacplusadc,slave;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
@@ -66,9 +67,6 @@
|
||||
__overrides__ {
|
||||
24db_digital_gain =
|
||||
<&hifiberry_dacplusadc>,"hifiberry,24db_digital_gain?";
|
||||
- slave = <&hifiberry_dacplusadc>,"hifiberry-dacplusadc,slave?",
|
||||
- <&frag1>,"target:0=",<&i2s_clk_producer>,
|
||||
- <&hifiberry_dacplusadc>,"i2s-controller:0=",<&i2s_clk_producer>;
|
||||
leds_off = <&hifiberry_dacplusadc>,"hifiberry-dacplusadc,leds_off?";
|
||||
};
|
||||
};
|
@ -0,0 +1,77 @@
|
||||
From f4102d30e760482e9f2fc94dcf8ce223afef3230 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Erik=20Bot=C3=B6?= <erik.boto@gmail.com>
|
||||
Date: Fri, 9 Feb 2024 18:37:46 +0100
|
||||
Subject: [PATCH 1294/1295] imx477: make trigger-mode more configurable
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Allow trigger-mode to be overridden using device tree so that it can be
|
||||
set per camera. Previously the mode could only be changed using a module
|
||||
parameter, which would then affect all cameras.
|
||||
|
||||
Signed-off-by: Erik Botö <erik.boto@gmail.com>
|
||||
---
|
||||
drivers/media/i2c/imx477.c | 19 ++++++++++++++-----
|
||||
1 file changed, 14 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/media/i2c/imx477.c
|
||||
+++ b/drivers/media/i2c/imx477.c
|
||||
@@ -1124,6 +1124,9 @@ struct imx477 {
|
||||
/* Current mode */
|
||||
const struct imx477_mode *mode;
|
||||
|
||||
+ /* Trigger mode */
|
||||
+ int trigger_mode_of;
|
||||
+
|
||||
/*
|
||||
* Mutex for serialized access:
|
||||
* Protect sensor module set pad format and start/stop streaming safely.
|
||||
@@ -1711,7 +1714,7 @@ static int imx477_start_streaming(struct
|
||||
struct i2c_client *client = v4l2_get_subdevdata(&imx477->sd);
|
||||
const struct imx477_reg_list *reg_list;
|
||||
const struct imx477_reg_list *extra_regs;
|
||||
- int ret;
|
||||
+ int ret, tm;
|
||||
|
||||
if (!imx477->common_regs_written) {
|
||||
ret = imx477_write_regs(imx477, mode_common_regs,
|
||||
@@ -1748,14 +1751,15 @@ static int imx477_start_streaming(struct
|
||||
return ret;
|
||||
|
||||
/* Set vsync trigger mode: 0=standalone, 1=source, 2=sink */
|
||||
+ tm = (imx477->trigger_mode_of >= 0) ? imx477->trigger_mode_of : trigger_mode;
|
||||
imx477_write_reg(imx477, IMX477_REG_MC_MODE,
|
||||
- IMX477_REG_VALUE_08BIT, (trigger_mode > 0) ? 1 : 0);
|
||||
+ IMX477_REG_VALUE_08BIT, (tm > 0) ? 1 : 0);
|
||||
imx477_write_reg(imx477, IMX477_REG_MS_SEL,
|
||||
- IMX477_REG_VALUE_08BIT, (trigger_mode <= 1) ? 1 : 0);
|
||||
+ IMX477_REG_VALUE_08BIT, (tm <= 1) ? 1 : 0);
|
||||
imx477_write_reg(imx477, IMX477_REG_XVS_IO_CTRL,
|
||||
- IMX477_REG_VALUE_08BIT, (trigger_mode == 1) ? 1 : 0);
|
||||
+ IMX477_REG_VALUE_08BIT, (tm == 1) ? 1 : 0);
|
||||
imx477_write_reg(imx477, IMX477_REG_EXTOUT_EN,
|
||||
- IMX477_REG_VALUE_08BIT, (trigger_mode == 1) ? 1 : 0);
|
||||
+ IMX477_REG_VALUE_08BIT, (tm == 1) ? 1 : 0);
|
||||
|
||||
/* set stream on register */
|
||||
return imx477_write_reg(imx477, IMX477_REG_MODE_SELECT,
|
||||
@@ -2187,6 +2191,7 @@ static int imx477_probe(struct i2c_clien
|
||||
struct imx477 *imx477;
|
||||
const struct of_device_id *match;
|
||||
int ret;
|
||||
+ u32 tm_of;
|
||||
|
||||
imx477 = devm_kzalloc(&client->dev, sizeof(*imx477), GFP_KERNEL);
|
||||
if (!imx477)
|
||||
@@ -2204,6 +2209,10 @@ static int imx477_probe(struct i2c_clien
|
||||
if (imx477_check_hwcfg(dev))
|
||||
return -EINVAL;
|
||||
|
||||
+ /* Default the trigger mode from OF to -1, which means invalid */
|
||||
+ ret = of_property_read_u32(dev->of_node, "trigger-mode", &tm_of);
|
||||
+ imx477->trigger_mode_of = (ret == 0) ? tm_of : -1;
|
||||
+
|
||||
/* Get system clock (xclk) */
|
||||
imx477->xclk = devm_clk_get(dev, NULL);
|
||||
if (IS_ERR(imx477->xclk)) {
|
@ -0,0 +1,129 @@
|
||||
From d02bd251d7f85e3aec02e5752df2f44a35961360 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Erik=20Bot=C3=B6?= <erik.boto@gmail.com>
|
||||
Date: Fri, 9 Feb 2024 18:41:24 +0100
|
||||
Subject: [PATCH 1295/1295] imx477: Update device tree overlays to support
|
||||
trigger-mode
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Also create generic overrides in camera-mux-N-port, that can be extended
|
||||
to configure vsync modes for cameras supporting this.
|
||||
|
||||
Example usages (to be combined with camera_auto_detect=0):
|
||||
dtoverlay=imx477,cam0,sync-source
|
||||
dtoverlay=imx477,sync-sink
|
||||
dtoverlay=camera-mux-2port,cam1-imx477,cam1-sync-sink
|
||||
dtoverlay=camera-mux-4port,cam3-imx477,cam3-sync-sink
|
||||
|
||||
Signed-off-by: Erik Botö <erik.boto@gmail.com>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/README | 16 ++++++++++++++++
|
||||
.../dts/overlays/camera-mux-2port-overlay.dts | 5 +++++
|
||||
.../dts/overlays/camera-mux-4port-overlay.dts | 9 +++++++++
|
||||
arch/arm/boot/dts/overlays/imx378-overlay.dts | 7 +++++++
|
||||
arch/arm/boot/dts/overlays/imx477-overlay.dts | 7 +++++++
|
||||
5 files changed, 44 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/README
|
||||
+++ b/arch/arm/boot/dts/overlays/README
|
||||
@@ -862,6 +862,10 @@ Params: cam0-arducam-64mp Select A
|
||||
cam1-ov7251 Select OV7251 for camera on port 1
|
||||
cam1-ov9281 Select OV9281 for camera on port 1
|
||||
cam1-imx290-clk-freq Set clock frequency for an IMX290 on port 1
|
||||
+ cam0-sync-source Set camera on port 0 as vsync source
|
||||
+ cam0-sync-sink Set camera on port 0 as vsync sink
|
||||
+ cam1-sync-source Set camera on port 1 as vsync source
|
||||
+ cam1-sync-sink Set camera on port 1 as vsync sink
|
||||
|
||||
cam0 Connect the mux to CAM0 port (default is CAM1)
|
||||
|
||||
@@ -923,6 +927,14 @@ Params: cam0-arducam-64mp Select A
|
||||
cam3-ov7251 Select OV7251 for camera on port 3
|
||||
cam3-ov9281 Select OV9281 for camera on port 3
|
||||
cam3-imx290-clk-freq Set clock frequency for an IMX290 on port 3
|
||||
+ cam0-sync-source Set camera on port 0 as vsync source
|
||||
+ cam0-sync-sink Set camera on port 0 as vsync sink
|
||||
+ cam1-sync-source Set camera on port 1 as vsync source
|
||||
+ cam1-sync-sink Set camera on port 1 as vsync sink
|
||||
+ cam2-sync-source Set camera on port 2 as vsync source
|
||||
+ cam2-sync-sink Set camera on port 2 as vsync sink
|
||||
+ cam3-sync-source Set camera on port 3 as vsync source
|
||||
+ cam3-sync-sink Set camera on port 3 as vsync sink
|
||||
|
||||
cam0 Connect the mux to CAM0 port (default is CAM1)
|
||||
|
||||
@@ -2676,6 +2688,8 @@ Params: rotation Mounting
|
||||
Compute Module (CSI0, i2c_vc, and cam0_reg).
|
||||
always-on Leave the regulator powered up, to stop the
|
||||
camera clamping I/Os such as XVS to 0V.
|
||||
+ sync-source Configure as vsync source
|
||||
+ sync-sink Configure as vsync sink
|
||||
|
||||
|
||||
Name: imx462
|
||||
@@ -2716,6 +2730,8 @@ Params: rotation Mounting
|
||||
Compute Module (CSI0, i2c_vc, and cam0_reg).
|
||||
always-on Leave the regulator powered up, to stop the
|
||||
camera clamping I/Os such as XVS to 0V.
|
||||
+ sync-source Configure as vsync source
|
||||
+ sync-sink Configure as vsync sink
|
||||
|
||||
|
||||
Name: imx519
|
||||
--- a/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts
|
||||
@@ -536,5 +536,10 @@
|
||||
|
||||
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
|
||||
<&csi_frag>, "target:0=",<&csi0>;
|
||||
+
|
||||
+ cam0-sync-source = <&imx477_0>, "trigger-mode:0=1";
|
||||
+ cam0-sync-sink = <&imx477_0>, "trigger-mode:0=2";
|
||||
+ cam1-sync-source = <&imx477_1>, "trigger-mode:0=1";
|
||||
+ cam1-sync-sink = <&imx477_1>, "trigger-mode:0=2";
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts
|
||||
@@ -939,5 +939,14 @@
|
||||
|
||||
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
|
||||
<&csi_frag>, "target:0=",<&csi0>;
|
||||
+
|
||||
+ cam0-sync-source = <&imx477_0>, "trigger-mode:0=1";
|
||||
+ cam0-sync-sink = <&imx477_0>, "trigger-mode:0=2";
|
||||
+ cam1-sync-source = <&imx477_1>, "trigger-mode:0=1";
|
||||
+ cam1-sync-sink = <&imx477_1>, "trigger-mode:0=2";
|
||||
+ cam2-sync-source = <&imx477_2>, "trigger-mode:0=1";
|
||||
+ cam2-sync-sink = <&imx477_2>, "trigger-mode:0=2";
|
||||
+ cam3-sync-source = <&imx477_3>, "trigger-mode:0=1";
|
||||
+ cam3-sync-sink = <&imx477_3>, "trigger-mode:0=2";
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/overlays/imx378-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/imx378-overlay.dts
|
||||
@@ -8,3 +8,10 @@
|
||||
&cam_node {
|
||||
compatible = "sony,imx378";
|
||||
};
|
||||
+
|
||||
+/{
|
||||
+ __overrides__ {
|
||||
+ sync-sink = <&cam_node>,"trigger-mode:0=2";
|
||||
+ sync-source = <&cam_node>,"trigger-mode:0=1";
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/overlays/imx477-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/imx477-overlay.dts
|
||||
@@ -8,3 +8,10 @@
|
||||
&cam_node {
|
||||
compatible = "sony,imx477";
|
||||
};
|
||||
+
|
||||
+/{
|
||||
+ __overrides__ {
|
||||
+ sync-sink = <&cam_node>,"trigger-mode:0=2";
|
||||
+ sync-source = <&cam_node>,"trigger-mode:0=1";
|
||||
+ };
|
||||
+};
|
Loading…
x
Reference in New Issue
Block a user