kernel-6.12.13-200
* Sat Feb 08 2025 Justin M. Forbes <jforbes@fedoraproject.org> [6.12.13-0] - Config update for 6.12.13 (Justin M. Forbes) - media: ov08x40: Don't log ov08x40_check_hwcfg() errors twice (Hans de Goede) - media: ov08x40: Add missing '\n' to ov08x40_check_hwcfg() error messages (Hans de Goede) - media: ov08x40: Add missing ov08x40_identify_module() call on stream-start (Hans de Goede) - media: ov08x40: Improve ov08x40_[read|write]_reg() error returns (Hans de Goede) - media: ov08x40: Improve ov08x40_identify_module() error logging (Hans de Goede) - media: ov08x40: Move ov08x40_identify_module() function up (Hans de Goede) - media: ov08x40: Get clock on ACPI platforms too (Hans de Goede) - media: ov08x40: Get reset GPIO and regulators on ACPI platforms too (Hans de Goede) - media: ov08x40: Move fwnode_graph_get_next_endpoint() call up (Hans de Goede) - media: ov08x40: Properly turn sensor on/off when runtime-suspended (Hans de Goede) - media: ov08x40: Add OF probe support (Bryan O'Donoghue) - media: ov08x40: Rename ext_clk to xvclk (Bryan O'Donoghue) - Reapply "init/main.c: Initialize early LSMs after arch code, static keys and calls." (Justin M. Forbes) - Linux v6.12.13 Resolves: Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
parent
b3c8560044
commit
154ae6669a
@ -1,3 +1,42 @@
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/eab4e4a537c1ecea380079999716d24f5cc67aa5
|
||||
eab4e4a537c1ecea380079999716d24f5cc67aa5 Reapply "init/main.c: Initialize early LSMs after arch code, static keys and calls."
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/afd7b1238ef1cd8d8478aa9d855ab0b447a9d4ad
|
||||
afd7b1238ef1cd8d8478aa9d855ab0b447a9d4ad media: ov08x40: Don't log ov08x40_check_hwcfg() errors twice
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/85dd6dca65b39302dd3e40c474cc44f5a0bebfd5
|
||||
85dd6dca65b39302dd3e40c474cc44f5a0bebfd5 media: ov08x40: Add missing '\n' to ov08x40_check_hwcfg() error messages
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/d9a8a9706720c071ca5b6a1711dfabe5a3f86a57
|
||||
d9a8a9706720c071ca5b6a1711dfabe5a3f86a57 media: ov08x40: Add missing ov08x40_identify_module() call on stream-start
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/5fb737e3b391b0f96372256e60af0b0ca1b8692c
|
||||
5fb737e3b391b0f96372256e60af0b0ca1b8692c media: ov08x40: Improve ov08x40_[read|write]_reg() error returns
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/17af9df680a647db4b1293bab7fca1ba5d603fc0
|
||||
17af9df680a647db4b1293bab7fca1ba5d603fc0 media: ov08x40: Improve ov08x40_identify_module() error logging
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/b79d5c494ad271bcc466daf23ba33dc084c1e776
|
||||
b79d5c494ad271bcc466daf23ba33dc084c1e776 media: ov08x40: Move ov08x40_identify_module() function up
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/99e766920a7373b66006985837cf0977a21a464e
|
||||
99e766920a7373b66006985837cf0977a21a464e media: ov08x40: Get clock on ACPI platforms too
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/86a850bd23358ac0cf9d4adef67494ccf78e1ed0
|
||||
86a850bd23358ac0cf9d4adef67494ccf78e1ed0 media: ov08x40: Get reset GPIO and regulators on ACPI platforms too
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/b1f6394a5ee065c5c3dff2c0087ed047645e2fc8
|
||||
b1f6394a5ee065c5c3dff2c0087ed047645e2fc8 media: ov08x40: Move fwnode_graph_get_next_endpoint() call up
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/fece7301f7798ba1b51583863ffee38d20bdbb71
|
||||
fece7301f7798ba1b51583863ffee38d20bdbb71 media: ov08x40: Properly turn sensor on/off when runtime-suspended
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/c061d21a08e4996c7259b34d2dbb01f2537ed35c
|
||||
c061d21a08e4996c7259b34d2dbb01f2537ed35c media: ov08x40: Add OF probe support
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/9743c6dce736d6d6029184bd41af3ff01c1d3560
|
||||
9743c6dce736d6d6029184bd41af3ff01c1d3560 media: ov08x40: Rename ext_clk to xvclk
|
||||
|
||||
https://gitlab.com/cki-project/kernel-ark/-/commit/32bcbd3a01f3693778efa32201859259cbac0161
|
||||
32bcbd3a01f3693778efa32201859259cbac0161 Revert "init/main.c: Initialize early LSMs after arch code, static keys and calls."
|
||||
|
||||
|
@ -3483,6 +3483,7 @@ CONFIG_INFINIBAND_ADDR_TRANS=y
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
CONFIG_INFINIBAND_ERDMA=m
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
|
||||
|
@ -3466,6 +3466,7 @@ CONFIG_INFINIBAND_ADDR_TRANS=y
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
CONFIG_INFINIBAND_ERDMA=m
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
|
||||
|
@ -2859,6 +2859,7 @@ CONFIG_INFINIBAND_BNXT_RE=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
# CONFIG_INFINIBAND_ERDMA is not set
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
|
||||
|
@ -2843,6 +2843,7 @@ CONFIG_INFINIBAND_BNXT_RE=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
# CONFIG_INFINIBAND_ERDMA is not set
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
|
||||
|
@ -3051,6 +3051,7 @@ CONFIG_INFINIBAND_BNXT_RE=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
# CONFIG_INFINIBAND_ERDMA is not set
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
|
||||
|
@ -3035,6 +3035,7 @@ CONFIG_INFINIBAND_BNXT_RE=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
# CONFIG_INFINIBAND_ERDMA is not set
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
|
||||
|
@ -3483,6 +3483,7 @@ CONFIG_INFINIBAND_ADDR_TRANS=y
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
CONFIG_INFINIBAND_ERDMA=m
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
|
||||
|
@ -2856,6 +2856,7 @@ CONFIG_INFINIBAND_BNXT_RE=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
# CONFIG_INFINIBAND_ERDMA is not set
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
|
||||
|
@ -3466,6 +3466,7 @@ CONFIG_INFINIBAND_ADDR_TRANS=y
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
CONFIG_INFINIBAND_ERDMA=m
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
|
||||
|
@ -2840,6 +2840,7 @@ CONFIG_INFINIBAND_BNXT_RE=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
# CONFIG_INFINIBAND_ERDMA is not set
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
|
||||
|
@ -3488,6 +3488,7 @@ CONFIG_INFINIBAND_ADDR_TRANS=y
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
CONFIG_INFINIBAND_ERDMA=m
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
|
||||
|
@ -2897,6 +2897,7 @@ CONFIG_INFINIBAND_BNXT_RE=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
# CONFIG_INFINIBAND_ERDMA is not set
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
|
||||
|
@ -3471,6 +3471,7 @@ CONFIG_INFINIBAND_ADDR_TRANS=y
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
CONFIG_INFINIBAND_ERDMA=m
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
|
||||
|
@ -2881,6 +2881,7 @@ CONFIG_INFINIBAND_BNXT_RE=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_INFINIBAND_EFA=m
|
||||
# CONFIG_INFINIBAND_ERDMA is not set
|
||||
# CONFIG_INFINIBAND_HNS_HIP08 is not set
|
||||
# CONFIG_INFINIBAND_HNS is not set
|
||||
CONFIG_INFINIBAND_IPOIB_CM=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
|
||||
|
@ -1,3 +1,21 @@
|
||||
* Sat Feb 08 2025 Justin M. Forbes <jforbes@fedoraproject.org> [6.12.13-0]
|
||||
- Config update for 6.12.13 (Justin M. Forbes)
|
||||
- media: ov08x40: Don't log ov08x40_check_hwcfg() errors twice (Hans de Goede)
|
||||
- media: ov08x40: Add missing '\n' to ov08x40_check_hwcfg() error messages (Hans de Goede)
|
||||
- media: ov08x40: Add missing ov08x40_identify_module() call on stream-start (Hans de Goede)
|
||||
- media: ov08x40: Improve ov08x40_[read|write]_reg() error returns (Hans de Goede)
|
||||
- media: ov08x40: Improve ov08x40_identify_module() error logging (Hans de Goede)
|
||||
- media: ov08x40: Move ov08x40_identify_module() function up (Hans de Goede)
|
||||
- media: ov08x40: Get clock on ACPI platforms too (Hans de Goede)
|
||||
- media: ov08x40: Get reset GPIO and regulators on ACPI platforms too (Hans de Goede)
|
||||
- media: ov08x40: Move fwnode_graph_get_next_endpoint() call up (Hans de Goede)
|
||||
- media: ov08x40: Properly turn sensor on/off when runtime-suspended (Hans de Goede)
|
||||
- media: ov08x40: Add OF probe support (Bryan O'Donoghue)
|
||||
- media: ov08x40: Rename ext_clk to xvclk (Bryan O'Donoghue)
|
||||
- Reapply "init/main.c: Initialize early LSMs after arch code, static keys and calls." (Justin M. Forbes)
|
||||
- Linux v6.12.13
|
||||
Resolves:
|
||||
|
||||
* Sat Feb 01 2025 Justin M. Forbes <jforbes@fedoraproject.org> [6.12.12-0]
|
||||
- Revert "init/main.c: Initialize early LSMs after arch code, static keys and calls." (Justin M. Forbes)
|
||||
- Linux v6.12.12
|
||||
|
25
kernel.spec
25
kernel.spec
@ -159,18 +159,18 @@ Summary: The Linux kernel
|
||||
# the --with-release option overrides this setting.)
|
||||
%define debugbuildsenabled 1
|
||||
# define buildid .local
|
||||
%define specrpmversion 6.12.12
|
||||
%define specversion 6.12.12
|
||||
%define specrpmversion 6.12.13
|
||||
%define specversion 6.12.13
|
||||
%define patchversion 6.12
|
||||
%define pkgrelease 200
|
||||
%define kversion 6
|
||||
%define tarfile_release 6.12.12
|
||||
%define tarfile_release 6.12.13
|
||||
# This is needed to do merge window version magic
|
||||
%define patchlevel 12
|
||||
# This allows pkg_release to have configurable %%{?dist} tag
|
||||
%define specrelease 200%{?buildid}%{?dist}
|
||||
# This defines the kabi tarball version
|
||||
%define kabiversion 6.12.12
|
||||
%define kabiversion 6.12.13
|
||||
|
||||
# If this variable is set to 1, a bpf selftests build failure will cause a
|
||||
# fatal kernel package build error
|
||||
@ -4164,6 +4164,23 @@ fi\
|
||||
#
|
||||
#
|
||||
%changelog
|
||||
* Sat Feb 08 2025 Justin M. Forbes <jforbes@fedoraproject.org> [6.12.13-0]
|
||||
- Config update for 6.12.13 (Justin M. Forbes)
|
||||
- media: ov08x40: Don't log ov08x40_check_hwcfg() errors twice (Hans de Goede)
|
||||
- media: ov08x40: Add missing '\n' to ov08x40_check_hwcfg() error messages (Hans de Goede)
|
||||
- media: ov08x40: Add missing ov08x40_identify_module() call on stream-start (Hans de Goede)
|
||||
- media: ov08x40: Improve ov08x40_[read|write]_reg() error returns (Hans de Goede)
|
||||
- media: ov08x40: Improve ov08x40_identify_module() error logging (Hans de Goede)
|
||||
- media: ov08x40: Move ov08x40_identify_module() function up (Hans de Goede)
|
||||
- media: ov08x40: Get clock on ACPI platforms too (Hans de Goede)
|
||||
- media: ov08x40: Get reset GPIO and regulators on ACPI platforms too (Hans de Goede)
|
||||
- media: ov08x40: Move fwnode_graph_get_next_endpoint() call up (Hans de Goede)
|
||||
- media: ov08x40: Properly turn sensor on/off when runtime-suspended (Hans de Goede)
|
||||
- media: ov08x40: Add OF probe support (Bryan O'Donoghue)
|
||||
- media: ov08x40: Rename ext_clk to xvclk (Bryan O'Donoghue)
|
||||
- Reapply "init/main.c: Initialize early LSMs after arch code, static keys and calls." (Justin M. Forbes)
|
||||
- Linux v6.12.13
|
||||
|
||||
* Sat Feb 01 2025 Justin M. Forbes <jforbes@fedoraproject.org> [6.12.12-0]
|
||||
- Revert "init/main.c: Initialize early LSMs after arch code, static keys and calls." (Justin M. Forbes)
|
||||
- Linux v6.12.12
|
||||
|
@ -39,6 +39,7 @@
|
||||
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +
|
||||
drivers/input/rmi4/rmi_driver.c | 124 +--
|
||||
drivers/iommu/iommu.c | 22 +
|
||||
drivers/media/i2c/ov08x40.c | 249 ++++--
|
||||
drivers/pci/quirks.c | 24 +
|
||||
drivers/scsi/sd.c | 10 +
|
||||
drivers/usb/core/hub.c | 7 +
|
||||
@ -47,7 +48,6 @@
|
||||
include/linux/lsm_hook_defs.h | 2 +
|
||||
include/linux/rmi.h | 1 +
|
||||
include/linux/security.h | 5 +
|
||||
init/main.c | 6 +-
|
||||
kernel/module/signing.c | 9 +-
|
||||
scripts/tags.sh | 2 +
|
||||
security/integrity/platform_certs/load_uefi.c | 6 +-
|
||||
@ -55,10 +55,10 @@
|
||||
security/lockdown/lockdown.c | 1 +
|
||||
security/security.c | 12 +
|
||||
tools/tracing/rtla/src/utils.c | 32 +-
|
||||
57 files changed, 2986 insertions(+), 266 deletions(-)
|
||||
57 files changed, 3166 insertions(+), 329 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 9e6246e733eb..d9fe5187333c 100644
|
||||
index 5442ff45f963..339e99dc5908 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -22,6 +22,18 @@ $(if $(filter __%, $(MAKECMDGOALS)), \
|
||||
@ -873,7 +873,7 @@ index 5fa203f4bc6b..80761c2b63fe 100644
|
||||
+ return !!ipl_secure_flag;
|
||||
+}
|
||||
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
|
||||
index a3fea683b227..a3162d93f437 100644
|
||||
index 99f165726ca9..70b4ef0d86b8 100644
|
||||
--- a/arch/s390/kernel/setup.c
|
||||
+++ b/arch/s390/kernel/setup.c
|
||||
@@ -49,6 +49,7 @@
|
||||
@ -1053,7 +1053,7 @@ index fdfa7b266218..f5f8ba457c93 100644
|
||||
tmp = ata_wait_register(ap, port_mmio + PORT_CMD,
|
||||
PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500);
|
||||
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
|
||||
index 0c85c981a833..5cd7310efaeb 100644
|
||||
index 258a5cb6f27a..e96c66c9de7a 100644
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -295,6 +295,8 @@ static const struct usb_device_id quirks_table[] = {
|
||||
@ -3959,6 +3959,433 @@ index 83c8e617a2c5..27f9b4517095 100644
|
||||
/**
|
||||
* iommu_setup_default_domain - Set the default_domain for the group
|
||||
* @group: Group to change
|
||||
diff --git a/drivers/media/i2c/ov08x40.c b/drivers/media/i2c/ov08x40.c
|
||||
index 67b86dabc67e..c2a399e3bb41 100644
|
||||
--- a/drivers/media/i2c/ov08x40.c
|
||||
+++ b/drivers/media/i2c/ov08x40.c
|
||||
@@ -3,10 +3,13 @@
|
||||
|
||||
#include <linux/unaligned.h>
|
||||
#include <linux/acpi.h>
|
||||
+#include <linux/clk.h>
|
||||
#include <linux/i2c.h>
|
||||
+#include <linux/gpio/consumer.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
+#include <linux/regulator/consumer.h>
|
||||
#include <media/v4l2-ctrls.h>
|
||||
#include <media/v4l2-device.h>
|
||||
#include <media/v4l2-fwnode.h>
|
||||
@@ -1215,7 +1218,7 @@ static const char * const ov08x40_test_pattern_menu[] = {
|
||||
/* Configurations for supported link frequencies */
|
||||
#define OV08X40_LINK_FREQ_400MHZ 400000000ULL
|
||||
#define OV08X40_SCLK_96MHZ 96000000ULL
|
||||
-#define OV08X40_EXT_CLK 19200000
|
||||
+#define OV08X40_XVCLK 19200000
|
||||
#define OV08X40_DATA_LANES 4
|
||||
|
||||
/*
|
||||
@@ -1279,6 +1282,12 @@ static const struct ov08x40_mode supported_modes[] = {
|
||||
},
|
||||
};
|
||||
|
||||
+static const char * const ov08x40_supply_names[] = {
|
||||
+ "dovdd", /* Digital I/O power */
|
||||
+ "avdd", /* Analog power */
|
||||
+ "dvdd", /* Digital core power */
|
||||
+};
|
||||
+
|
||||
struct ov08x40 {
|
||||
struct v4l2_subdev sd;
|
||||
struct media_pad pad;
|
||||
@@ -1291,6 +1300,10 @@ struct ov08x40 {
|
||||
struct v4l2_ctrl *hblank;
|
||||
struct v4l2_ctrl *exposure;
|
||||
|
||||
+ struct clk *xvclk;
|
||||
+ struct gpio_desc *reset_gpio;
|
||||
+ struct regulator_bulk_data supplies[ARRAY_SIZE(ov08x40_supply_names)];
|
||||
+
|
||||
/* Current mode */
|
||||
const struct ov08x40_mode *cur_mode;
|
||||
|
||||
@@ -1303,6 +1316,55 @@ struct ov08x40 {
|
||||
|
||||
#define to_ov08x40(_sd) container_of(_sd, struct ov08x40, sd)
|
||||
|
||||
+static int ov08x40_power_on(struct device *dev)
|
||||
+{
|
||||
+ struct v4l2_subdev *sd = dev_get_drvdata(dev);
|
||||
+ struct ov08x40 *ov08x = to_ov08x40(sd);
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = clk_prepare_enable(ov08x->xvclk);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "failed to enable xvclk\n");
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ if (ov08x->reset_gpio) {
|
||||
+ gpiod_set_value_cansleep(ov08x->reset_gpio, 1);
|
||||
+ usleep_range(1000, 2000);
|
||||
+ }
|
||||
+
|
||||
+ ret = regulator_bulk_enable(ARRAY_SIZE(ov08x40_supply_names),
|
||||
+ ov08x->supplies);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "failed to enable regulators\n");
|
||||
+ goto disable_clk;
|
||||
+ }
|
||||
+
|
||||
+ gpiod_set_value_cansleep(ov08x->reset_gpio, 0);
|
||||
+ usleep_range(1500, 1800);
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+disable_clk:
|
||||
+ gpiod_set_value_cansleep(ov08x->reset_gpio, 1);
|
||||
+ clk_disable_unprepare(ov08x->xvclk);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int ov08x40_power_off(struct device *dev)
|
||||
+{
|
||||
+ struct v4l2_subdev *sd = dev_get_drvdata(dev);
|
||||
+ struct ov08x40 *ov08x = to_ov08x40(sd);
|
||||
+
|
||||
+ gpiod_set_value_cansleep(ov08x->reset_gpio, 1);
|
||||
+ regulator_bulk_disable(ARRAY_SIZE(ov08x40_supply_names),
|
||||
+ ov08x->supplies);
|
||||
+ clk_disable_unprepare(ov08x->xvclk);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/* Read registers up to 4 at a time */
|
||||
static int ov08x40_read_reg(struct ov08x40 *ov08x,
|
||||
u16 reg, u32 len, u32 *val)
|
||||
@@ -1332,7 +1394,7 @@ static int ov08x40_read_reg(struct ov08x40 *ov08x,
|
||||
|
||||
ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
|
||||
if (ret != ARRAY_SIZE(msgs))
|
||||
- return -EIO;
|
||||
+ return ret < 0 ? ret : -EIO;
|
||||
|
||||
*val = be32_to_cpu(data_be);
|
||||
|
||||
@@ -1401,7 +1463,7 @@ static int ov08x40_write_reg(struct ov08x40 *ov08x,
|
||||
u16 reg, u32 len, u32 __val)
|
||||
{
|
||||
struct i2c_client *client = v4l2_get_subdevdata(&ov08x->sd);
|
||||
- int buf_i, val_i;
|
||||
+ int buf_i, val_i, ret;
|
||||
u8 buf[6], *val_p;
|
||||
__be32 val;
|
||||
|
||||
@@ -1419,8 +1481,9 @@ static int ov08x40_write_reg(struct ov08x40 *ov08x,
|
||||
while (val_i < 4)
|
||||
buf[buf_i++] = val_p[val_i++];
|
||||
|
||||
- if (i2c_master_send(client, buf, len + 2) != len + 2)
|
||||
- return -EIO;
|
||||
+ ret = i2c_master_send(client, buf, len + 2);
|
||||
+ if (ret != len + 2)
|
||||
+ return ret < 0 ? ret : -EIO;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1869,6 +1932,34 @@ static int ov08x40_stop_streaming(struct ov08x40 *ov08x)
|
||||
OV08X40_REG_VALUE_08BIT, OV08X40_MODE_STANDBY);
|
||||
}
|
||||
|
||||
+/* Verify chip ID */
|
||||
+static int ov08x40_identify_module(struct ov08x40 *ov08x)
|
||||
+{
|
||||
+ struct i2c_client *client = v4l2_get_subdevdata(&ov08x->sd);
|
||||
+ int ret;
|
||||
+ u32 val;
|
||||
+
|
||||
+ if (ov08x->identified)
|
||||
+ return 0;
|
||||
+
|
||||
+ ret = ov08x40_read_reg(ov08x, OV08X40_REG_CHIP_ID,
|
||||
+ OV08X40_REG_VALUE_24BIT, &val);
|
||||
+ if (ret) {
|
||||
+ dev_err(&client->dev, "error reading chip-id register: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ if (val != OV08X40_CHIP_ID) {
|
||||
+ dev_err(&client->dev, "chip id mismatch: %x!=%x\n",
|
||||
+ OV08X40_CHIP_ID, val);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ ov08x->identified = true;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int ov08x40_set_stream(struct v4l2_subdev *sd, int enable)
|
||||
{
|
||||
struct ov08x40 *ov08x = to_ov08x40(sd);
|
||||
@@ -1882,6 +1973,10 @@ static int ov08x40_set_stream(struct v4l2_subdev *sd, int enable)
|
||||
if (ret < 0)
|
||||
goto err_unlock;
|
||||
|
||||
+ ret = ov08x40_identify_module(ov08x);
|
||||
+ if (ret)
|
||||
+ goto err_rpm_put;
|
||||
+
|
||||
/*
|
||||
* Apply default & customized values
|
||||
* and then start streaming.
|
||||
@@ -1906,32 +2001,6 @@ static int ov08x40_set_stream(struct v4l2_subdev *sd, int enable)
|
||||
return ret;
|
||||
}
|
||||
|
||||
-/* Verify chip ID */
|
||||
-static int ov08x40_identify_module(struct ov08x40 *ov08x)
|
||||
-{
|
||||
- struct i2c_client *client = v4l2_get_subdevdata(&ov08x->sd);
|
||||
- int ret;
|
||||
- u32 val;
|
||||
-
|
||||
- if (ov08x->identified)
|
||||
- return 0;
|
||||
-
|
||||
- ret = ov08x40_read_reg(ov08x, OV08X40_REG_CHIP_ID,
|
||||
- OV08X40_REG_VALUE_24BIT, &val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- if (val != OV08X40_CHIP_ID) {
|
||||
- dev_err(&client->dev, "chip id mismatch: %x!=%x\n",
|
||||
- OV08X40_CHIP_ID, val);
|
||||
- return -ENXIO;
|
||||
- }
|
||||
-
|
||||
- ov08x->identified = true;
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
static const struct v4l2_subdev_video_ops ov08x40_video_ops = {
|
||||
.s_stream = ov08x40_set_stream,
|
||||
};
|
||||
@@ -2072,7 +2141,7 @@ static void ov08x40_free_controls(struct ov08x40 *ov08x)
|
||||
mutex_destroy(&ov08x->mutex);
|
||||
}
|
||||
|
||||
-static int ov08x40_check_hwcfg(struct device *dev)
|
||||
+static int ov08x40_check_hwcfg(struct ov08x40 *ov08x, struct device *dev)
|
||||
{
|
||||
struct v4l2_fwnode_endpoint bus_cfg = {
|
||||
.bus_type = V4L2_MBUS_CSI2_DPHY
|
||||
@@ -2081,42 +2150,71 @@ static int ov08x40_check_hwcfg(struct device *dev)
|
||||
struct fwnode_handle *fwnode = dev_fwnode(dev);
|
||||
unsigned int i, j;
|
||||
int ret;
|
||||
- u32 ext_clk;
|
||||
-
|
||||
- if (!fwnode)
|
||||
- return -ENXIO;
|
||||
-
|
||||
- ret = fwnode_property_read_u32(dev_fwnode(dev), "clock-frequency",
|
||||
- &ext_clk);
|
||||
- if (ret) {
|
||||
- dev_err(dev, "can't get clock frequency");
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- if (ext_clk != OV08X40_EXT_CLK) {
|
||||
- dev_err(dev, "external clock %d is not supported",
|
||||
- ext_clk);
|
||||
- return -EINVAL;
|
||||
- }
|
||||
+ u32 xvclk_rate;
|
||||
|
||||
+ /*
|
||||
+ * Sometimes the fwnode graph is initialized by the bridge driver.
|
||||
+ * Bridge drivers doing this also add sensor properties, wait for this.
|
||||
+ */
|
||||
ep = fwnode_graph_get_next_endpoint(fwnode, NULL);
|
||||
if (!ep)
|
||||
- return -ENXIO;
|
||||
+ return dev_err_probe(dev, -EPROBE_DEFER,
|
||||
+ "waiting for fwnode graph endpoint\n");
|
||||
|
||||
ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
|
||||
fwnode_handle_put(ep);
|
||||
if (ret)
|
||||
- return ret;
|
||||
+ return dev_err_probe(dev, ret, "parsing endpoint failed\n");
|
||||
+
|
||||
+ ov08x->reset_gpio = devm_gpiod_get_optional(dev, "reset",
|
||||
+ GPIOD_OUT_LOW);
|
||||
+ if (IS_ERR(ov08x->reset_gpio)) {
|
||||
+ ret = dev_err_probe(dev, PTR_ERR(ov08x->reset_gpio),
|
||||
+ "getting reset GPIO\n");
|
||||
+ goto out_err;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(ov08x40_supply_names); i++)
|
||||
+ ov08x->supplies[i].supply = ov08x40_supply_names[i];
|
||||
+
|
||||
+ ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ov08x40_supply_names),
|
||||
+ ov08x->supplies);
|
||||
+ if (ret)
|
||||
+ goto out_err;
|
||||
+
|
||||
+ ov08x->xvclk = devm_clk_get_optional(dev, NULL);
|
||||
+ if (IS_ERR(ov08x->xvclk)) {
|
||||
+ ret = dev_err_probe(dev, PTR_ERR(ov08x->xvclk),
|
||||
+ "getting xvclk\n");
|
||||
+ goto out_err;
|
||||
+ }
|
||||
+ if (ov08x->xvclk) {
|
||||
+ xvclk_rate = clk_get_rate(ov08x->xvclk);
|
||||
+ } else {
|
||||
+ ret = fwnode_property_read_u32(dev_fwnode(dev), "clock-frequency",
|
||||
+ &xvclk_rate);
|
||||
+ if (ret) {
|
||||
+ dev_err(dev, "can't get clock frequency\n");
|
||||
+ goto out_err;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (xvclk_rate != OV08X40_XVCLK) {
|
||||
+ dev_err(dev, "external clock %d is not supported\n",
|
||||
+ xvclk_rate);
|
||||
+ ret = -EINVAL;
|
||||
+ goto out_err;
|
||||
+ }
|
||||
|
||||
if (bus_cfg.bus.mipi_csi2.num_data_lanes != OV08X40_DATA_LANES) {
|
||||
- dev_err(dev, "number of CSI2 data lanes %d is not supported",
|
||||
+ dev_err(dev, "number of CSI2 data lanes %d is not supported\n",
|
||||
bus_cfg.bus.mipi_csi2.num_data_lanes);
|
||||
ret = -EINVAL;
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
if (!bus_cfg.nr_of_link_frequencies) {
|
||||
- dev_err(dev, "no link frequencies defined");
|
||||
+ dev_err(dev, "no link frequencies defined\n");
|
||||
ret = -EINVAL;
|
||||
goto out_err;
|
||||
}
|
||||
@@ -2129,7 +2227,7 @@ static int ov08x40_check_hwcfg(struct device *dev)
|
||||
}
|
||||
|
||||
if (j == bus_cfg.nr_of_link_frequencies) {
|
||||
- dev_err(dev, "no link frequency %lld supported",
|
||||
+ dev_err(dev, "no link frequency %lld supported\n",
|
||||
link_freq_menu_items[i]);
|
||||
ret = -EINVAL;
|
||||
goto out_err;
|
||||
@@ -2143,33 +2241,34 @@ static int ov08x40_check_hwcfg(struct device *dev)
|
||||
}
|
||||
|
||||
static int ov08x40_probe(struct i2c_client *client)
|
||||
-{
|
||||
- struct ov08x40 *ov08x;
|
||||
+{ struct ov08x40 *ov08x;
|
||||
int ret;
|
||||
bool full_power;
|
||||
|
||||
- /* Check HW config */
|
||||
- ret = ov08x40_check_hwcfg(&client->dev);
|
||||
- if (ret) {
|
||||
- dev_err(&client->dev, "failed to check hwcfg: %d", ret);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
ov08x = devm_kzalloc(&client->dev, sizeof(*ov08x), GFP_KERNEL);
|
||||
if (!ov08x)
|
||||
return -ENOMEM;
|
||||
|
||||
+ /* Check HW config */
|
||||
+ ret = ov08x40_check_hwcfg(ov08x, &client->dev);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
/* Initialize subdev */
|
||||
v4l2_i2c_subdev_init(&ov08x->sd, client, &ov08x40_subdev_ops);
|
||||
|
||||
full_power = acpi_dev_state_d0(&client->dev);
|
||||
if (full_power) {
|
||||
- /* Check module identity */
|
||||
- ret = ov08x40_identify_module(ov08x);
|
||||
+ ret = ov08x40_power_on(&client->dev);
|
||||
if (ret) {
|
||||
- dev_err(&client->dev, "failed to find sensor: %d\n", ret);
|
||||
+ dev_err(&client->dev, "failed to power on\n");
|
||||
return ret;
|
||||
}
|
||||
+
|
||||
+ /* Check module identity */
|
||||
+ ret = ov08x40_identify_module(ov08x);
|
||||
+ if (ret)
|
||||
+ goto probe_power_off;
|
||||
}
|
||||
|
||||
/* Set default mode to max resolution */
|
||||
@@ -2177,7 +2276,7 @@ static int ov08x40_probe(struct i2c_client *client)
|
||||
|
||||
ret = ov08x40_init_controls(ov08x);
|
||||
if (ret)
|
||||
- return ret;
|
||||
+ goto probe_power_off;
|
||||
|
||||
/* Initialize subdev */
|
||||
ov08x->sd.internal_ops = &ov08x40_internal_ops;
|
||||
@@ -2210,6 +2309,9 @@ static int ov08x40_probe(struct i2c_client *client)
|
||||
error_handler_free:
|
||||
ov08x40_free_controls(ov08x);
|
||||
|
||||
+probe_power_off:
|
||||
+ ov08x40_power_off(&client->dev);
|
||||
+
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -2223,9 +2325,14 @@ static void ov08x40_remove(struct i2c_client *client)
|
||||
ov08x40_free_controls(ov08x);
|
||||
|
||||
pm_runtime_disable(&client->dev);
|
||||
+ if (!pm_runtime_status_suspended(&client->dev))
|
||||
+ ov08x40_power_off(&client->dev);
|
||||
pm_runtime_set_suspended(&client->dev);
|
||||
}
|
||||
|
||||
+static DEFINE_RUNTIME_DEV_PM_OPS(ov08x40_pm_ops, ov08x40_power_off,
|
||||
+ ov08x40_power_on, NULL);
|
||||
+
|
||||
#ifdef CONFIG_ACPI
|
||||
static const struct acpi_device_id ov08x40_acpi_ids[] = {
|
||||
{"OVTI08F4"},
|
||||
@@ -2235,10 +2342,18 @@ static const struct acpi_device_id ov08x40_acpi_ids[] = {
|
||||
MODULE_DEVICE_TABLE(acpi, ov08x40_acpi_ids);
|
||||
#endif
|
||||
|
||||
+static const struct of_device_id ov08x40_of_match[] = {
|
||||
+ { .compatible = "ovti,ov08x40" },
|
||||
+ { /* sentinel */ }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, ov08x40_of_match);
|
||||
+
|
||||
static struct i2c_driver ov08x40_i2c_driver = {
|
||||
.driver = {
|
||||
.name = "ov08x40",
|
||||
.acpi_match_table = ACPI_PTR(ov08x40_acpi_ids),
|
||||
+ .of_match_table = ov08x40_of_match,
|
||||
+ .pm = pm_sleep_ptr(&ov08x40_pm_ops),
|
||||
},
|
||||
.probe = ov08x40_probe,
|
||||
.remove = ov08x40_remove,
|
||||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||
index 8103bc24a54e..ea629c78fa7c 100644
|
||||
--- a/drivers/pci/quirks.c
|
||||
@ -4194,31 +4621,6 @@ index 2ec8f3014757..7273b2b8b23b 100644
|
||||
static inline int lsm_fill_user_ctx(struct lsm_ctx __user *uctx,
|
||||
u32 *uctx_len, void *val, size_t val_len,
|
||||
u64 id, u64 flags)
|
||||
diff --git a/init/main.c b/init/main.c
|
||||
index c4778edae797..206acdde51f5 100644
|
||||
--- a/init/main.c
|
||||
+++ b/init/main.c
|
||||
@@ -922,11 +922,8 @@ void start_kernel(void)
|
||||
boot_cpu_init();
|
||||
page_address_init();
|
||||
pr_notice("%s", linux_banner);
|
||||
- setup_arch(&command_line);
|
||||
- /* Static keys and static calls are needed by LSMs */
|
||||
- jump_label_init();
|
||||
- static_call_init();
|
||||
early_security_init();
|
||||
+ setup_arch(&command_line);
|
||||
setup_boot_config();
|
||||
setup_command_line(command_line);
|
||||
setup_nr_cpu_ids();
|
||||
@@ -937,6 +934,7 @@ void start_kernel(void)
|
||||
|
||||
pr_notice("Kernel command line: %s\n", saved_command_line);
|
||||
/* parameters may set static keys */
|
||||
+ jump_label_init();
|
||||
parse_early_param();
|
||||
after_dashes = parse_args("Booting kernel",
|
||||
static_command_line, __start___param,
|
||||
diff --git a/kernel/module/signing.c b/kernel/module/signing.c
|
||||
index a2ff4242e623..f0d2be1ee4f1 100644
|
||||
--- a/kernel/module/signing.c
|
||||
|
6
sources
6
sources
@ -1,3 +1,3 @@
|
||||
SHA512 (linux-6.12.12.tar.xz) = 13d5b85fb724b81b123f88264057968fe7ea7ba9cd5c2c3483a971e14ace26b9c4cac4fa2e3e50500afe08a5fa8e35135be9ea6fc2f12fa9f53ac6f78e3a1559
|
||||
SHA512 (kernel-abi-stablelists-6.12.12.tar.xz) = 9d48237e3b7d012a363ce502487b3d3a0a69aaccc9b8b4db71d5dd43cdaa5d4d1669362aeae34bc1a8e4286b76ba17608fe17a1e551f3fc95e9b356f77f8f8a5
|
||||
SHA512 (kernel-kabi-dw-6.12.12.tar.xz) = 6f003628c855228059764f13057424097284b90133e87d68249ceb2d100c9e5f9ae15f9ded98df36f80d461dfe3b41ff7db60c97aed221e3b5613b5999fde731
|
||||
SHA512 (linux-6.12.13.tar.xz) = ef0e3b152530b476bdb05aa6a2140e96342936d2a2a07852bd951518f28e22a0239d31abcb8c6332f192a09a1a01a708f73e909bd6feedd3f85e6bd790dcd053
|
||||
SHA512 (kernel-abi-stablelists-6.12.13.tar.xz) = d84bb18c2dd554cc768f6bfffe81371903b6bd68ba14b29ebcc9047f9a547f37665c9d4e0192d930346fdfe0cdbc554e6546b5bdf57bdff3df0f18aefd9e2848
|
||||
SHA512 (kernel-kabi-dw-6.12.13.tar.xz) = affbed5e5c12103fbae8de48177658185c062081edb5642d6cb5557056a00309aa868b96df7e6a89a3864171c9e31468eec96c0d38105087b1bca5f6ef81c522
|
||||
|
Loading…
Reference in New Issue
Block a user