Bump rpi and ebin edge kernels to 6.6.y (#5925)

* Bump rpi and ebin edge kernels to 6.6.y
* Move rpi patches from archive, remove deprecated patch folder
This commit is contained in:
Igor
2023-11-19 22:34:54 +01:00
committed by GitHub
parent 54c896e029
commit 8caf51243e
27 changed files with 852 additions and 947 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -44,8 +44,8 @@ case "${BRANCH}" in
edge) edge)
declare -g RASPI_DISTRO_KERNEL=no declare -g RASPI_DISTRO_KERNEL=no
declare -g KERNELSOURCE='https://github.com/raspberrypi/linux' declare -g KERNELSOURCE='https://github.com/raspberrypi/linux'
declare -g KERNEL_MAJOR_MINOR="6.5" # Major and minor versions of this kernel. For mainline caching. declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel. For mainline caching.
declare -g KERNELBRANCH="branch:rpi-6.5.y" declare -g KERNELBRANCH="branch:rpi-6.6.y"
declare -g KERNELPATCHDIR="${LINUXFAMILY}-${BRANCH}" declare -g KERNELPATCHDIR="${LINUXFAMILY}-${BRANCH}"
declare -g LINUXCONFIG="linux-${LINUXFAMILY}-${BRANCH}" declare -g LINUXCONFIG="linux-${LINUXFAMILY}-${BRANCH}"
;; ;;

View File

@@ -62,8 +62,8 @@ case $BRANCH in
;; ;;
edge) edge)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel. declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-6.1.y' KERNELBRANCH='branch:linux-6.6.y'
;; ;;
esac esac

View File

@@ -1,29 +0,0 @@
From 988f69b247fa3a1b70876395342aeb8c7dc2e834 Mon Sep 17 00:00:00 2001
From: graysky <graysky@archlinux.us>
Date: Mon, 7 Dec 2020 13:03:40 -0500
Subject: [PATCH] Make /proc/cpuinfo consistent on arm64 and arm
Signed-off-by: graysky <graysky@archlinux.us>
---
arch/arm64/kernel/cpuinfo.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
index 721350d21074..88e2b8fcd7e6 100644
--- a/arch/arm64/kernel/cpuinfo.c
+++ b/arch/arm64/kernel/cpuinfo.c
@@ -153,9 +153,8 @@ static int c_show(struct seq_file *m, void *v)
* "processor". Give glibc what it expects.
*/
seq_printf(m, "processor\t: %d\n", i);
- if (compat)
- seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n",
- MIDR_REVISION(midr), COMPAT_ELF_PLATFORM);
+ seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n",
+ MIDR_REVISION(midr), COMPAT_ELF_PLATFORM);
seq_printf(m, "BogoMIPS\t: %lu.%02lu\n",
loops_per_jiffy / (500000UL/HZ),
--
2.29.2

View File

@@ -1,22 +0,0 @@
diff -Naur a/arch/arm/Kconfig b/arch/arm/Kconfig
--- a/arch/arm/Kconfig 2022-12-11 17:15:18.000000000 -0500
+++ b/arch/arm/Kconfig 2022-12-13 10:24:24.085749880 -0500
@@ -2,6 +2,7 @@
config ARM
bool
default y
+ select ARCH_BCM
select ARCH_32BIT_OFF_T
select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE if HAVE_KRETPROBES && FRAME_POINTER && !ARM_UNWIND
select ARCH_HAS_BINFMT_FLAT
diff -Naur a/arch/arm64/Kconfig b/arch/arm64/Kconfig
--- a/arch/arm64/Kconfig 2022-12-11 17:15:18.000000000 -0500
+++ b/arch/arm64/Kconfig 2022-12-13 10:28:40.045233987 -0500
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
config ARM64
def_bool y
+ select ARCH_BCM
select ACPI_APMT if ACPI
select ACPI_CCA_REQUIRED if ACPI
select ACPI_GENERIC_GSI if ACPI

View File

@@ -1,160 +0,0 @@
diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
index 0909b088a284..31ff5348020c 100644
--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
@@ -4763,6 +4763,78 @@ static void dwc2_gadget_set_speed(struct usb_gadget *g, enum usb_device_speed sp
spin_unlock_irqrestore(&hsotg->lock, flags);
}
+/**
+ * dwc2_hsotg_wakeup - send wakeup signal to the host
+ * @gadget: The usb gadget state
+ *
+ * If the gadget is in device mode and in the L1 or L2 state,
+ * it sends a wakeup signal to the host.
+ */
+static int dwc2_hsotg_wakeup(struct usb_gadget *gadget)
+{
+ struct dwc2_hsotg *hsotg = to_hsotg(gadget);
+ int ret = -1;
+ unsigned long flags;
+
+ spin_lock_irqsave(&hsotg->lock, flags);
+
+ if (!hsotg->remote_wakeup_allowed) {
+ dev_dbg(hsotg->dev,
+ "wakeup: signalling skipped: is not allowed by host\n");
+ goto skip;
+ }
+ if (hsotg->lx_state != DWC2_L1 && hsotg->lx_state != DWC2_L2) {
+ dev_dbg(hsotg->dev,
+ "wakeup: signalling skipped: gadget not in L1/L2 state: %d\n", hsotg->lx_state);
+ goto skip;
+ }
+ if (!dwc2_is_device_mode(hsotg)) {
+ dev_dbg(hsotg->dev,
+ "wakeup: signalling skipped: gadget not in device mode\n");
+ goto skip;
+ }
+
+ /*if (hsotg->in_ppd) {
+ if (dwc2_exit_partial_power_down(hsotg, 1, true))
+ dev_err(hsotg->dev, "wakeup: exit partial_power_down failed\n");
+ call_gadget(hsotg, resume);
+ }*/
+ if (hsotg->params.power_down == DWC2_POWER_DOWN_PARAM_NONE && hsotg->bus_suspended) {
+ u32 pcgctl;
+
+ dev_dbg(hsotg->dev, "wakeup: exiting device clock gating\n");
+
+ /* Clear the Gate hclk. */
+ pcgctl = dwc2_readl(hsotg, PCGCTL);
+ pcgctl &= ~PCGCTL_GATEHCLK;
+ dwc2_writel(hsotg, pcgctl, PCGCTL);
+ udelay(5);
+
+ /* Phy Clock bit. */
+ pcgctl = dwc2_readl(hsotg, PCGCTL);
+ pcgctl &= ~PCGCTL_STOPPCLK;
+ dwc2_writel(hsotg, pcgctl, PCGCTL);
+ udelay(5);
+
+ hsotg->bus_suspended = false;
+ }
+
+ dev_dbg(hsotg->dev, "wakeup: sending signal to the host");
+
+ dwc2_set_bit(hsotg, DCTL, DCTL_RMTWKUPSIG);
+ mdelay(10);
+ dwc2_clear_bit(hsotg, DCTL, DCTL_RMTWKUPSIG);
+
+ /* After the signalling, the USB core wakes up to L0 */
+ call_gadget(hsotg, resume);
+ hsotg->lx_state = DWC2_L0;
+
+ ret = 0;
+skip:
+ spin_unlock_irqrestore(&hsotg->lock, flags);
+ return ret;
+}
+
static const struct usb_gadget_ops dwc2_hsotg_gadget_ops = {
.get_frame = dwc2_hsotg_gadget_getframe,
.set_selfpowered = dwc2_hsotg_set_selfpowered,
@@ -4772,6 +4844,7 @@ static const struct usb_gadget_ops dwc2_hsotg_gadget_ops = {
.udc_set_speed = dwc2_gadget_set_speed,
.vbus_session = dwc2_hsotg_vbus_session,
.vbus_draw = dwc2_hsotg_vbus_draw,
+ .wakeup = dwc2_hsotg_wakeup,
};
/**
diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c
index ca0a7d9eaa34..cf11ab8e88e0 100644
--- a/drivers/usb/gadget/function/f_hid.c
+++ b/drivers/usb/gadget/function/f_hid.c
@@ -54,6 +54,8 @@ struct f_hidg {
* will be used to receive reports.
*/
bool use_out_ep;
+ /* attempt to wake up the host before write */
+ bool wakeup_on_write;
/* recv report */
spinlock_t read_spinlock;
@@ -422,10 +424,19 @@ static ssize_t f_hidg_write(struct file *file, const char __user *buffer,
size_t count, loff_t *offp)
{
struct f_hidg *hidg = file->private_data;
+ struct usb_composite_dev *cdev = hidg->func.config->cdev;
struct usb_request *req;
unsigned long flags;
ssize_t status = -ENOMEM;
+ /*
+ * remote wakeup is allowed only when the corresponding bit
+ * in config descriptor is set and wakeup_on_write is enabled.
+ * FIXME: cdev->config can be NULLed on disconnect.
+ */
+ if (hidg->wakeup_on_write /*&& cdev->config->bmAttributes & 0x20*/)
+ usb_gadget_wakeup(cdev->gadget);
+
spin_lock_irqsave(&hidg->write_spinlock, flags);
if (!hidg->req) {
@@ -1101,6 +1112,7 @@ CONFIGFS_ATTR(f_hid_opts_, name)
F_HID_OPT(subclass, 8, 255);
F_HID_OPT(protocol, 8, 255);
F_HID_OPT(no_out_endpoint, 8, 1);
+F_HID_OPT(wakeup_on_write, 8, 1);
F_HID_OPT(report_length, 16, 65535);
static ssize_t f_hid_opts_report_desc_show(struct config_item *item, char *page)
@@ -1161,6 +1173,7 @@ static struct configfs_attribute *hid_attrs[] = {
&f_hid_opts_attr_subclass,
&f_hid_opts_attr_protocol,
&f_hid_opts_attr_no_out_endpoint,
+ &f_hid_opts_attr_wakeup_on_write,
&f_hid_opts_attr_report_length,
&f_hid_opts_attr_report_desc,
&f_hid_opts_attr_dev,
@@ -1293,6 +1306,7 @@ static struct usb_function *hidg_alloc(struct usb_function_instance *fi)
}
}
hidg->use_out_ep = !opts->no_out_endpoint;
+ hidg->wakeup_on_write = opts->wakeup_on_write;
mutex_unlock(&opts->lock);
diff --git a/drivers/usb/gadget/function/u_hid.h b/drivers/usb/gadget/function/u_hid.h
index 84bb70292855..f7fcaf1eaf1d 100644
--- a/drivers/usb/gadget/function/u_hid.h
+++ b/drivers/usb/gadget/function/u_hid.h
@@ -21,6 +21,7 @@ struct f_hid_opts {
unsigned char subclass;
unsigned char protocol;
unsigned char no_out_endpoint;
+ unsigned char wakeup_on_write;
unsigned short report_length;
unsigned short report_desc_length;
unsigned char *report_desc;

View File

@@ -1,19 +0,0 @@
diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
index 4a4703634a2a..cdba48f5ddf8 100644
--- a/drivers/usb/gadget/function/f_mass_storage.c
+++ b/drivers/usb/gadget/function/f_mass_storage.c
@@ -2852,11 +2852,11 @@ void fsg_common_set_inquiry_string(struct fsg_common *common, const char *vn,
/* Prepare inquiryString */
i = get_default_bcdDevice();
snprintf(common->inquiry_string, sizeof(common->inquiry_string),
- "%-8s%-16s%04x", vn ?: "Linux",
+ "%-8s%-16s%04x", vn ?: "PiKVM",
/* Assume product name dependent on the first LUN */
pn ?: ((*common->luns)->cdrom
- ? "File-CD Gadget"
- : "File-Stor Gadget"),
+ ? "CD-ROM Drive"
+ : "Flash Drive"),
i);
}
EXPORT_SYMBOL_GPL(fsg_common_set_inquiry_string);

View File

@@ -1,29 +0,0 @@
From 988f69b247fa3a1b70876395342aeb8c7dc2e834 Mon Sep 17 00:00:00 2001
From: graysky <graysky@archlinux.us>
Date: Mon, 7 Dec 2020 13:03:40 -0500
Subject: [PATCH] Make /proc/cpuinfo consistent on arm64 and arm
Signed-off-by: graysky <graysky@archlinux.us>
---
arch/arm64/kernel/cpuinfo.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
index 721350d21074..88e2b8fcd7e6 100644
--- a/arch/arm64/kernel/cpuinfo.c
+++ b/arch/arm64/kernel/cpuinfo.c
@@ -153,9 +153,8 @@ static int c_show(struct seq_file *m, void *v)
* "processor". Give glibc what it expects.
*/
seq_printf(m, "processor\t: %d\n", i);
- if (compat)
- seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n",
- MIDR_REVISION(midr), COMPAT_ELF_PLATFORM);
+ seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n",
+ MIDR_REVISION(midr), COMPAT_ELF_PLATFORM);
seq_printf(m, "BogoMIPS\t: %lu.%02lu\n",
loops_per_jiffy / (500000UL/HZ),
--
2.29.2

View File

@@ -1,160 +0,0 @@
diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
index 0909b088a284..31ff5348020c 100644
--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
@@ -4763,6 +4763,78 @@ static void dwc2_gadget_set_speed(struct usb_gadget *g, enum usb_device_speed sp
spin_unlock_irqrestore(&hsotg->lock, flags);
}
+/**
+ * dwc2_hsotg_wakeup - send wakeup signal to the host
+ * @gadget: The usb gadget state
+ *
+ * If the gadget is in device mode and in the L1 or L2 state,
+ * it sends a wakeup signal to the host.
+ */
+static int dwc2_hsotg_wakeup(struct usb_gadget *gadget)
+{
+ struct dwc2_hsotg *hsotg = to_hsotg(gadget);
+ int ret = -1;
+ unsigned long flags;
+
+ spin_lock_irqsave(&hsotg->lock, flags);
+
+ if (!hsotg->remote_wakeup_allowed) {
+ dev_dbg(hsotg->dev,
+ "wakeup: signalling skipped: is not allowed by host\n");
+ goto skip;
+ }
+ if (hsotg->lx_state != DWC2_L1 && hsotg->lx_state != DWC2_L2) {
+ dev_dbg(hsotg->dev,
+ "wakeup: signalling skipped: gadget not in L1/L2 state: %d\n", hsotg->lx_state);
+ goto skip;
+ }
+ if (!dwc2_is_device_mode(hsotg)) {
+ dev_dbg(hsotg->dev,
+ "wakeup: signalling skipped: gadget not in device mode\n");
+ goto skip;
+ }
+
+ /*if (hsotg->in_ppd) {
+ if (dwc2_exit_partial_power_down(hsotg, 1, true))
+ dev_err(hsotg->dev, "wakeup: exit partial_power_down failed\n");
+ call_gadget(hsotg, resume);
+ }*/
+ if (hsotg->params.power_down == DWC2_POWER_DOWN_PARAM_NONE && hsotg->bus_suspended) {
+ u32 pcgctl;
+
+ dev_dbg(hsotg->dev, "wakeup: exiting device clock gating\n");
+
+ /* Clear the Gate hclk. */
+ pcgctl = dwc2_readl(hsotg, PCGCTL);
+ pcgctl &= ~PCGCTL_GATEHCLK;
+ dwc2_writel(hsotg, pcgctl, PCGCTL);
+ udelay(5);
+
+ /* Phy Clock bit. */
+ pcgctl = dwc2_readl(hsotg, PCGCTL);
+ pcgctl &= ~PCGCTL_STOPPCLK;
+ dwc2_writel(hsotg, pcgctl, PCGCTL);
+ udelay(5);
+
+ hsotg->bus_suspended = false;
+ }
+
+ dev_dbg(hsotg->dev, "wakeup: sending signal to the host");
+
+ dwc2_set_bit(hsotg, DCTL, DCTL_RMTWKUPSIG);
+ mdelay(10);
+ dwc2_clear_bit(hsotg, DCTL, DCTL_RMTWKUPSIG);
+
+ /* After the signalling, the USB core wakes up to L0 */
+ call_gadget(hsotg, resume);
+ hsotg->lx_state = DWC2_L0;
+
+ ret = 0;
+skip:
+ spin_unlock_irqrestore(&hsotg->lock, flags);
+ return ret;
+}
+
static const struct usb_gadget_ops dwc2_hsotg_gadget_ops = {
.get_frame = dwc2_hsotg_gadget_getframe,
.set_selfpowered = dwc2_hsotg_set_selfpowered,
@@ -4772,6 +4844,7 @@ static const struct usb_gadget_ops dwc2_hsotg_gadget_ops = {
.udc_set_speed = dwc2_gadget_set_speed,
.vbus_session = dwc2_hsotg_vbus_session,
.vbus_draw = dwc2_hsotg_vbus_draw,
+ .wakeup = dwc2_hsotg_wakeup,
};
/**
diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c
index ca0a7d9eaa34..cf11ab8e88e0 100644
--- a/drivers/usb/gadget/function/f_hid.c
+++ b/drivers/usb/gadget/function/f_hid.c
@@ -54,6 +54,8 @@ struct f_hidg {
* will be used to receive reports.
*/
bool use_out_ep;
+ /* attempt to wake up the host before write */
+ bool wakeup_on_write;
/* recv report */
spinlock_t read_spinlock;
@@ -422,10 +424,19 @@ static ssize_t f_hidg_write(struct file *file, const char __user *buffer,
size_t count, loff_t *offp)
{
struct f_hidg *hidg = file->private_data;
+ struct usb_composite_dev *cdev = hidg->func.config->cdev;
struct usb_request *req;
unsigned long flags;
ssize_t status = -ENOMEM;
+ /*
+ * remote wakeup is allowed only when the corresponding bit
+ * in config descriptor is set and wakeup_on_write is enabled.
+ * FIXME: cdev->config can be NULLed on disconnect.
+ */
+ if (hidg->wakeup_on_write /*&& cdev->config->bmAttributes & 0x20*/)
+ usb_gadget_wakeup(cdev->gadget);
+
spin_lock_irqsave(&hidg->write_spinlock, flags);
if (!hidg->req) {
@@ -1101,6 +1112,7 @@ CONFIGFS_ATTR(f_hid_opts_, name)
F_HID_OPT(subclass, 8, 255);
F_HID_OPT(protocol, 8, 255);
F_HID_OPT(no_out_endpoint, 8, 1);
+F_HID_OPT(wakeup_on_write, 8, 1);
F_HID_OPT(report_length, 16, 65535);
static ssize_t f_hid_opts_report_desc_show(struct config_item *item, char *page)
@@ -1161,6 +1173,7 @@ static struct configfs_attribute *hid_attrs[] = {
&f_hid_opts_attr_subclass,
&f_hid_opts_attr_protocol,
&f_hid_opts_attr_no_out_endpoint,
+ &f_hid_opts_attr_wakeup_on_write,
&f_hid_opts_attr_report_length,
&f_hid_opts_attr_report_desc,
&f_hid_opts_attr_dev,
@@ -1293,6 +1306,7 @@ static struct usb_function *hidg_alloc(struct usb_function_instance *fi)
}
}
hidg->use_out_ep = !opts->no_out_endpoint;
+ hidg->wakeup_on_write = opts->wakeup_on_write;
mutex_unlock(&opts->lock);
diff --git a/drivers/usb/gadget/function/u_hid.h b/drivers/usb/gadget/function/u_hid.h
index 84bb70292855..f7fcaf1eaf1d 100644
--- a/drivers/usb/gadget/function/u_hid.h
+++ b/drivers/usb/gadget/function/u_hid.h
@@ -21,6 +21,7 @@ struct f_hid_opts {
unsigned char subclass;
unsigned char protocol;
unsigned char no_out_endpoint;
+ unsigned char wakeup_on_write;
unsigned short report_length;
unsigned short report_desc_length;
unsigned char *report_desc;

View File

@@ -1,19 +0,0 @@
diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
index 4a4703634a2a..cdba48f5ddf8 100644
--- a/drivers/usb/gadget/function/f_mass_storage.c
+++ b/drivers/usb/gadget/function/f_mass_storage.c
@@ -2852,11 +2852,11 @@ void fsg_common_set_inquiry_string(struct fsg_common *common, const char *vn,
/* Prepare inquiryString */
i = get_default_bcdDevice();
snprintf(common->inquiry_string, sizeof(common->inquiry_string),
- "%-8s%-16s%04x", vn ?: "Linux",
+ "%-8s%-16s%04x", vn ?: "PiKVM",
/* Assume product name dependent on the first LUN */
pn ?: ((*common->luns)->cdrom
- ? "File-CD Gadget"
- : "File-Stor Gadget"),
+ ? "CD-ROM Drive"
+ : "Flash Drive"),
i);
}
EXPORT_SYMBOL_GPL(fsg_common_set_inquiry_string);

View File

@@ -1,22 +0,0 @@
diff -Naur a/arch/arm/Kconfig b/arch/arm/Kconfig
--- a/arch/arm/Kconfig 2022-12-11 17:15:18.000000000 -0500
+++ b/arch/arm/Kconfig 2022-12-13 10:24:24.085749880 -0500
@@ -2,6 +2,7 @@
config ARM
bool
default y
+ select ARCH_BCM
select ARCH_32BIT_OFF_T
select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE if HAVE_KRETPROBES && FRAME_POINTER && !ARM_UNWIND
select ARCH_HAS_BINFMT_FLAT
diff -Naur a/arch/arm64/Kconfig b/arch/arm64/Kconfig
--- a/arch/arm64/Kconfig 2022-12-11 17:15:18.000000000 -0500
+++ b/arch/arm64/Kconfig 2022-12-13 10:28:40.045233987 -0500
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
config ARM64
def_bool y
+ select ARCH_BCM
select ACPI_APMT if ACPI
select ACPI_CCA_REQUIRED if ACPI
select ACPI_GENERIC_GSI if ACPI

View File

@@ -1 +0,0 @@
archive/bcm2711-6.1

View File

@@ -1 +0,0 @@
archive/bcm2711-6.5

View File

@@ -1 +0,0 @@
archive/bcm2711-5.15