[intel-ipu6-kmod/f38] - Updated ipu6-driver commit to dfedab03f3856010d37968cb384696038c73c984 - Updated ivsc-driver commi
by smallorange
commit b9873dbf25effc5a84d9ea9572f0f96f73d3506b
Author: Kate Hsuan <hpa(a)redhat.com>
Date: Thu May 11 22:09:32 2023 +0800
- Updated ipu6-driver commit to dfedab03f3856010d37968cb384696038c73c984
- Updated ivsc-driver commit to c8db12b907e2e455d4d5586e5812d1ae0eebd571
.gitignore | 2 +
0001-Fix-dmabuf-errors-with-kernel-6.2.patch | 80 -----
0001-cio2-bridge-Fix-compilation-with-kernel.patch | 90 +++++
...l_ipu6_isys-Add-video_nr-module-parameter.patch | 54 +++
...sys-Fix-possible-deadlock-with-kernel-6.2.patch | 169 ----------
...-Use-clk-framework-instead-of-a-clke-GPIO.patch | 365 +++++++++++++++++++++
...Use-clk-framework-instead-of-a-clken-GPIO.patch | 137 --------
...e-powerdown-and-reset-signals-active-low-.patch | 128 --------
0005-sensors-Make-pled-GPIO-optional.patch | 75 -----
0006-ov01a1s-Drop-unused-link_freq-variable.patch | 34 --
...-rename-the-already-registered-PCI-device.patch | 39 ---
intel-ipu6-kmod.spec | 29 +-
sources | 4 +-
13 files changed, 525 insertions(+), 681 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 6a53ae1..d39d319 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
/ipu6-drivers-f83b074.tar.gz
/ivsc-driver-94ecb88.tar.gz
+/ipu6-drivers-dfedab0.tar.gz
+/ivsc-driver-c8db12b.tar.gz
diff --git a/0001-cio2-bridge-Fix-compilation-with-kernel.patch b/0001-cio2-bridge-Fix-compilation-with-kernel.patch
new file mode 100644
index 0000000..572fa8f
--- /dev/null
+++ b/0001-cio2-bridge-Fix-compilation-with-kernel.patch
@@ -0,0 +1,90 @@
+From c61b117487a720084f4a645f728eed9b953690fa Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Wed, 3 May 2023 10:01:23 +0200
+Subject: [PATCH] cio2-bridge: Fix compilation with kernel >= 6.3
+
+Fix cio2-bridge compilation with kernel 6.3 and later.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/pci/intel/cio2-bridge.c | 29 +++++++++++++++++++++++++++
+ drivers/media/pci/intel/cio2-bridge.h | 3 +++
+ 2 files changed, 32 insertions(+)
+
+diff --git a/drivers/media/pci/intel/cio2-bridge.c b/drivers/media/pci/intel/cio2-bridge.c
+index fe7175ddd4b4..526d0c018b66 100644
+--- a/drivers/media/pci/intel/cio2-bridge.c
++++ b/drivers/media/pci/intel/cio2-bridge.c
+@@ -293,13 +293,33 @@ static void cio2_bridge_unregister_sensors(struct cio2_bridge *bridge)
+
+ for (i = 0; i < bridge->n_sensors; i++) {
+ sensor = &bridge->sensors[i];
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ software_node_unregister_node_group(sensor->group);
++#else
+ software_node_unregister_nodes(sensor->swnodes);
++#endif
+ ACPI_FREE(sensor->pld);
+ acpi_dev_put(sensor->adev);
+ i2c_unregister_device(sensor->vcm_i2c_client);
+ }
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++static void cio2_bridge_init_swnode_group(struct cio2_sensor *sensor)
++{
++ struct software_node *nodes = sensor->swnodes;
++
++ sensor->group[SWNODE_SENSOR_HID] = &nodes[SWNODE_SENSOR_HID];
++ sensor->group[SWNODE_SENSOR_PORT] = &nodes[SWNODE_SENSOR_PORT];
++ sensor->group[SWNODE_SENSOR_ENDPOINT] = &nodes[SWNODE_SENSOR_ENDPOINT];
++ sensor->group[SWNODE_CIO2_PORT] = &nodes[SWNODE_CIO2_PORT];
++ sensor->group[SWNODE_CIO2_ENDPOINT] = &nodes[SWNODE_CIO2_ENDPOINT];
++ if (sensor->ssdb.vcmtype &&
++ sensor->ssdb.vcmtype <= ARRAY_SIZE(cio2_vcm_types))
++ sensor->group[SWNODE_VCM] = &nodes[SWNODE_VCM];
++}
++#endif
++
+ static int cio2_bridge_connect_sensor(const struct cio2_sensor_config *cfg,
+ struct cio2_bridge *bridge,
+ struct pci_dev *cio2)
+@@ -352,7 +372,12 @@ static int cio2_bridge_connect_sensor(const struct cio2_sensor_config *cfg,
+ cio2_bridge_create_fwnode_properties(sensor, bridge, cfg);
+ cio2_bridge_create_connection_swnodes(bridge, sensor);
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ cio2_bridge_init_swnode_group(sensor);
++ software_node_register_node_group(sensor->group);
++#else
+ ret = software_node_register_nodes(sensor->swnodes);
++#endif
+ if (ret)
+ goto err_free_pld;
+
+@@ -379,7 +404,11 @@ static int cio2_bridge_connect_sensor(const struct cio2_sensor_config *cfg,
+ return 0;
+
+ err_free_swnodes:
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ software_node_unregister_node_group(sensor->group);
++#else
+ software_node_unregister_nodes(sensor->swnodes);
++#endif
+ err_free_pld:
+ ACPI_FREE(sensor->pld);
+ err_put_adev:
+diff --git a/drivers/media/pci/intel/cio2-bridge.h b/drivers/media/pci/intel/cio2-bridge.h
+index a0c99ba8f700..77d76dde9b0b 100644
+--- a/drivers/media/pci/intel/cio2-bridge.h
++++ b/drivers/media/pci/intel/cio2-bridge.h
+@@ -121,6 +121,9 @@ struct cio2_sensor {
+
+ /* SWNODE_COUNT + 1 for terminating empty node */
+ struct software_node swnodes[SWNODE_COUNT + 1];
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ const struct software_node *group[SWNODE_COUNT + 1];
++#endif
+ struct cio2_node_names node_names;
+
+ struct cio2_sensor_ssdb ssdb;
diff --git a/0002-intel_ipu6_isys-Add-video_nr-module-parameter.patch b/0002-intel_ipu6_isys-Add-video_nr-module-parameter.patch
new file mode 100644
index 0000000..7d24882
--- /dev/null
+++ b/0002-intel_ipu6_isys-Add-video_nr-module-parameter.patch
@@ -0,0 +1,54 @@
+From 46688d874b61e4c3153b95f8c95e0943625b6e30 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Wed, 3 May 2023 10:07:38 +0200
+Subject: [PATCH] intel_ipu6_isys: Add video_nr module parameter
+
+Add a video_nr module parameter so that the isys /dev/video#
+node can be assigned a fixed number instead of taking the first
+available free number.
+
+Both Ubuntu and Fedora by default use the IPU6 camera stack
+together with v4l2loopback for compat with apps which expect
+a regular video4linux2 device.
+
+Most apps open /dev/video0 by default so we want that to be
+the v4l2loopback device. But currently if the ipu6-drivers
+load first they become /dev/video0.
+
+This new video_nr module parameter allows distros to
+specify a different fixed number for intel_ipu6_isys so that
+v4l2loopback becomes /dev/video0 independent of the probe
+ordering.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/pci/intel/ipu-isys-video.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/media/pci/intel/ipu-isys-video.c b/drivers/media/pci/intel/ipu-isys-video.c
+index 19c255b7bcda..a5e30f047fc4 100644
+--- a/drivers/media/pci/intel/ipu-isys-video.c
++++ b/drivers/media/pci/intel/ipu-isys-video.c
+@@ -38,6 +38,10 @@
+ /* use max resolution pixel rate by default */
+ #define DEFAULT_PIXEL_RATE (360000000ULL * 2 * 4 / 10)
+
++static int video_nr = -1;
++module_param(video_nr, int, 0444);
++MODULE_PARM_DESC(video_nr, "video device number (-1=auto, 0=/dev/video0, etc.)");
++
+ const struct ipu_isys_pixelformat ipu_isys_pfmts_be_soc[] = {
+ {V4L2_PIX_FMT_Y10, 16, 10, 0, MEDIA_BUS_FMT_Y10_1X10,
+ IPU_FW_ISYS_FRAME_FORMAT_RAW16},
+@@ -1877,9 +1881,9 @@ int ipu_isys_video_init(struct ipu_isys_video *av,
+ mutex_lock(&av->mutex);
+
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
+- rval = video_register_device(&av->vdev, VFL_TYPE_GRABBER, -1);
++ rval = video_register_device(&av->vdev, VFL_TYPE_GRABBER, video_nr);
+ #else
+- rval = video_register_device(&av->vdev, VFL_TYPE_VIDEO, -1);
++ rval = video_register_device(&av->vdev, VFL_TYPE_VIDEO, video_nr);
+ #endif
+ if (rval)
+ goto out_media_entity_cleanup;
diff --git a/0003-sensors-Use-clk-framework-instead-of-a-clke-GPIO.patch b/0003-sensors-Use-clk-framework-instead-of-a-clke-GPIO.patch
new file mode 100644
index 0000000..0c7179a
--- /dev/null
+++ b/0003-sensors-Use-clk-framework-instead-of-a-clke-GPIO.patch
@@ -0,0 +1,365 @@
+From 8f4346915bb7e3a3ad3eea2c24b6da09dac257b2 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Tue, 29 Nov 2022 15:06:23 +0100
+Subject: [PATCH 1/4] sensors: Use clk-framework instead of a "clken" GPIO
+
+Use the clk-framework to get a clk-provider reference and use
+clk_prepare_enable() / clk_disable_unprepare() to control the clk.
+
+This replace modelling the clock as a "clken" GPIO, which is not a valid
+way to model it when the clk is e.g. generated by the clk-generator of
+a TPS68470 PMIC.
+
+This relies on the following upstream bugfix for the INT3472 clk provider:
+
+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cf5ac2d45f6e4d11ad78e7b10ae9a4121ba5e995
+
+"platform/x86: int3472/discrete: Ensure the clk/power enable pins are in output mode"
+
+This patch is available since upstream kernel 6.1.7, so the new
+code is only enabled for LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 7)
+
+This allow susing the IPU6 sensor drivers with the upstream int3472
+driver with unmodified upstream kernels >= 6.1.7 .
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/i2c/hm11b1.c | 18 ++++++++++++++++++
+ drivers/media/i2c/ov01a1s.c | 18 ++++++++++++++++++
+ 2 files changed, 36 insertions(+)
+
+diff --git a/drivers/media/i2c/hm11b1.c b/drivers/media/i2c/hm11b1.c
+index 1cc5cd761fbf..e14810bdd612 100644
+--- a/drivers/media/i2c/hm11b1.c
++++ b/drivers/media/i2c/hm11b1.c
+@@ -468,8 +468,13 @@ struct hm11b1 {
+ struct gpio_desc *reset_gpio;
+ /* GPIO for powerdown */
+ struct gpio_desc *powerdown_gpio;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ /* GPIO for clock enable */
+ struct gpio_desc *clken_gpio;
++#else
++ /* Clock provider */
++ struct clk *clk;
++#endif
+ /* GPIO for privacy LED */
+ struct gpio_desc *pled_gpio;
+ #endif
+@@ -508,7 +513,14 @@ static void hm11b1_set_power(struct hm11b1 *hm11b1, int on)
+ return;
+ gpiod_set_value_cansleep(hm11b1->reset_gpio, on);
+ gpiod_set_value_cansleep(hm11b1->powerdown_gpio, on);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ gpiod_set_value_cansleep(hm11b1->clken_gpio, on);
++#else
++ if (on)
++ clk_prepare_enable(hm11b1->clk);
++ else
++ clk_disable_unprepare(hm11b1->clk);
++#endif
+ gpiod_set_value_cansleep(hm11b1->pled_gpio, on);
+ msleep(20);
+ #elif IS_ENABLED(CONFIG_POWER_CTRL_LOGIC)
+@@ -1093,12 +1105,18 @@ static int hm11b1_parse_dt(struct hm11b1 *hm11b1)
+ return ret;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ hm11b1->clken_gpio = devm_gpiod_get(dev, "clken", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(hm11b1->clken_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting clken_gpio gpio: %d\n", ret);
+ return ret;
+ }
++#else
++ hm11b1->clk = devm_clk_get_optional(dev, "clk");
++ if (IS_ERR(hm11b1->clk))
++ return dev_err_probe(dev, PTR_ERR(hm11b1->clk), "getting clk\n");
++#endif
+
+ hm11b1->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(hm11b1->pled_gpio);
+diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c
+index e4477625ce3b..628a1dd83ddf 100644
+--- a/drivers/media/i2c/ov01a1s.c
++++ b/drivers/media/i2c/ov01a1s.c
+@@ -317,8 +317,13 @@ struct ov01a1s {
+ struct gpio_desc *reset_gpio;
+ /* GPIO for powerdown */
+ struct gpio_desc *powerdown_gpio;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ /* GPIO for clock enable */
+ struct gpio_desc *clken_gpio;
++#else
++ /* Clock provider */
++ struct clk *clk;
++#endif
+ /* GPIO for privacy LED */
+ struct gpio_desc *pled_gpio;
+ #endif
+@@ -339,7 +344,14 @@ static void ov01a1s_set_power(struct ov01a1s *ov01a1s, int on)
+ return;
+ gpiod_set_value_cansleep(ov01a1s->reset_gpio, on);
+ gpiod_set_value_cansleep(ov01a1s->powerdown_gpio, on);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ gpiod_set_value_cansleep(ov01a1s->clken_gpio, on);
++#else
++ if (on)
++ clk_prepare_enable(ov01a1s->clk);
++ else
++ clk_disable_unprepare(ov01a1s->clk);
++#endif
+ gpiod_set_value_cansleep(ov01a1s->pled_gpio, on);
+ msleep(20);
+ #elif IS_ENABLED(CONFIG_POWER_CTRL_LOGIC)
+@@ -945,12 +957,18 @@ static int ov01a1s_parse_dt(struct ov01a1s *ov01a1s)
+ return -EPROBE_DEFER;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ ov01a1s->clken_gpio = devm_gpiod_get(dev, "clken", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(ov01a1s->clken_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting clken_gpio gpio: %d\n", ret);
+ return -EPROBE_DEFER;
+ }
++#else
++ ov01a1s->clk = devm_clk_get_optional(dev, "clk");
++ if (IS_ERR(ov01a1s->clk))
++ return dev_err_probe(dev, PTR_ERR(ov01a1s->clk), "getting clk\n");
++#endif
+
+ ov01a1s->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(ov01a1s->pled_gpio);
+
+From b04fdf6433f6b64840d46f92ddf3d6d18e86ede3 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Tue, 29 Nov 2022 23:37:50 +0100
+Subject: [PATCH 2/4] sensors: Make powerdown and reset signals active-low by
+ default
+
+The powerdown and reset functions should be set to 0, as in
+not-powered-down, not-in-reset when the sensor is turned on.
+
+Adjust the gpiod_set() value parameters for the powerdown_gpio
+and reset_gpio to !on to properly reflect this.
+
+Typical sensors however have a NRESET aka /RESET pin which needs
+to be driven low to put the device in reset and the have
+a powerup/enable pin rather then a powerdown pin. So at
+the physicical level the pins associated with the reset and
+powerdown functions need to be driven low to put the chip
+in reset / to power the chip down. Mark the pins as active-low
+in the added gpio-lookup table entries for these pin to
+reflect this.
+
+This double negation has 0 net effect, but it uses the GPIO
+subsystem functionality as intended (setting reset to 0
+on poweron makes lot more sense then setting it to 1 on poweron)
+and it aligns the use of these GPIOs with that of the mainline
+kernel allowing future use of the IPU6 driver with the
+mainline INT3472 driver without needing to patch the mainline
+kernel.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/i2c/hm11b1.c | 4 ++--
+ drivers/media/i2c/ov01a1s.c | 4 ++--
+ drivers/media/i2c/ov2740.c | 2 +-
+ ...nt3472-support-independent-clock-and-LED-gpios-5.17+.patch | 4 ++--
+ patch/int3472-support-independent-clock-and-LED-gpios.patch | 4 ++--
+ 5 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/media/i2c/hm11b1.c b/drivers/media/i2c/hm11b1.c
+index e14810bdd612..652e8f177044 100644
+--- a/drivers/media/i2c/hm11b1.c
++++ b/drivers/media/i2c/hm11b1.c
+@@ -511,8 +511,8 @@ static void hm11b1_set_power(struct hm11b1 *hm11b1, int on)
+ #if IS_ENABLED(CONFIG_INTEL_SKL_INT3472)
+ if (!(hm11b1->reset_gpio && hm11b1->powerdown_gpio))
+ return;
+- gpiod_set_value_cansleep(hm11b1->reset_gpio, on);
+- gpiod_set_value_cansleep(hm11b1->powerdown_gpio, on);
++ gpiod_set_value_cansleep(hm11b1->reset_gpio, !on);
++ gpiod_set_value_cansleep(hm11b1->powerdown_gpio, !on);
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ gpiod_set_value_cansleep(hm11b1->clken_gpio, on);
+ #else
+diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c
+index 628a1dd83ddf..2ce81d04abf6 100644
+--- a/drivers/media/i2c/ov01a1s.c
++++ b/drivers/media/i2c/ov01a1s.c
+@@ -342,8 +342,8 @@ static void ov01a1s_set_power(struct ov01a1s *ov01a1s, int on)
+ #if IS_ENABLED(CONFIG_INTEL_SKL_INT3472)
+ if (!(ov01a1s->reset_gpio && ov01a1s->powerdown_gpio))
+ return;
+- gpiod_set_value_cansleep(ov01a1s->reset_gpio, on);
+- gpiod_set_value_cansleep(ov01a1s->powerdown_gpio, on);
++ gpiod_set_value_cansleep(ov01a1s->reset_gpio, !on);
++ gpiod_set_value_cansleep(ov01a1s->powerdown_gpio, !on);
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ gpiod_set_value_cansleep(ov01a1s->clken_gpio, on);
+ #else
+diff --git a/drivers/media/i2c/ov2740.c b/drivers/media/i2c/ov2740.c
+index 67fb17e08e36..a8bb101776bd 100644
+--- a/drivers/media/i2c/ov2740.c
++++ b/drivers/media/i2c/ov2740.c
+@@ -596,7 +596,7 @@ static void ov2740_set_power(struct ov2740 *ov2740, int on)
+ {
+ if (!(ov2740->reset_gpio && ov2740->pled_gpio))
+ return;
+- gpiod_set_value_cansleep(ov2740->reset_gpio, on);
++ gpiod_set_value_cansleep(ov2740->reset_gpio, !on);
+ gpiod_set_value_cansleep(ov2740->pled_gpio, on);
+ msleep(20);
+ }
+diff --git a/patch/int3472-support-independent-clock-and-LED-gpios-5.17+.patch b/patch/int3472-support-independent-clock-and-LED-gpios-5.17+.patch
+index 57373ac85f39..66ed770b68a0 100644
+--- a/patch/int3472-support-independent-clock-and-LED-gpios-5.17+.patch
++++ b/patch/int3472-support-independent-clock-and-LED-gpios-5.17+.patch
+@@ -65,7 +65,7 @@ index ed4c9d760757..f5857ec334fa 100644
+ case INT3472_GPIO_TYPE_RESET:
+ ret = skl_int3472_map_gpio_to_sensor(int3472, agpio, "reset",
+ - GPIO_ACTIVE_LOW);
+-+ polarity);
+++ polarity ^ GPIO_ACTIVE_LOW);
+ if (ret)
+ err_msg = "Failed to map reset pin to sensor\n";
+
+@@ -73,7 +73,7 @@ index ed4c9d760757..f5857ec334fa 100644
+ case INT3472_GPIO_TYPE_POWERDOWN:
+ ret = skl_int3472_map_gpio_to_sensor(int3472, agpio, "powerdown",
+ - GPIO_ACTIVE_LOW);
+-+ polarity);
+++ polarity ^ GPIO_ACTIVE_LOW);
+ if (ret)
+ err_msg = "Failed to map powerdown pin to sensor\n";
+
+diff --git a/patch/int3472-support-independent-clock-and-LED-gpios.patch b/patch/int3472-support-independent-clock-and-LED-gpios.patch
+index a2def0d76852..df70ce4a7117 100644
+--- a/patch/int3472-support-independent-clock-and-LED-gpios.patch
++++ b/patch/int3472-support-independent-clock-and-LED-gpios.patch
+@@ -65,7 +65,7 @@ index e59d79c7e82f..5cf6dd63d43f 100644
+ case INT3472_GPIO_TYPE_RESET:
+ ret = skl_int3472_map_gpio_to_sensor(int3472, agpio, "reset",
+ - GPIO_ACTIVE_LOW);
+-+ polarity);
+++ polarity ^ GPIO_ACTIVE_LOW);
+ if (ret)
+ err_msg = "Failed to map reset pin to sensor\n";
+
+@@ -73,7 +73,7 @@ index e59d79c7e82f..5cf6dd63d43f 100644
+ case INT3472_GPIO_TYPE_POWERDOWN:
+ ret = skl_int3472_map_gpio_to_sensor(int3472, agpio, "powerdown",
+ - GPIO_ACTIVE_LOW);
+-+ polarity);
+++ polarity ^ GPIO_ACTIVE_LOW);
+ if (ret)
+ err_msg = "Failed to map powerdown pin to sensor\n";
+
+
+From 90d4b2d9cb07292c6a2580572252938a836f4a86 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Thu, 15 Dec 2022 16:00:31 +0100
+Subject: [PATCH 3/4] sensors: Make "pled" GPIO optional
+
+Starting with kernel 6.3 the mainline int3472 driver models the privacy
+LED device as a LED class device rather then as a GPIO.
+
+As part of these changed the v4l2-core subdev code in 6.3 turns
+the LED on/off on s_stream() on/off calls on the sensor v4l2-subdev,
+so sensor drivers don't have to take care of this themselves.
+
+Change the devm_gpiod_get() calls for the "pled" GPIO into
+devm_gpiod_get_optional() calls so that the sensor drivers
+can work with both older kernel (controlling the GPIO) and
+with newer kernels which don't have a "pled" GPIO.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/i2c/hm11b1.c | 2 +-
+ drivers/media/i2c/ov01a1s.c | 2 +-
+ drivers/media/i2c/ov2740.c | 4 +---
+ 3 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/media/i2c/hm11b1.c b/drivers/media/i2c/hm11b1.c
+index 652e8f177044..6257f7987268 100644
+--- a/drivers/media/i2c/hm11b1.c
++++ b/drivers/media/i2c/hm11b1.c
+@@ -1118,7 +1118,7 @@ static int hm11b1_parse_dt(struct hm11b1 *hm11b1)
+ return dev_err_probe(dev, PTR_ERR(hm11b1->clk), "getting clk\n");
+ #endif
+
+- hm11b1->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
++ hm11b1->pled_gpio = devm_gpiod_get_optional(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(hm11b1->pled_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting pled gpio: %d\n", ret);
+diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c
+index 2ce81d04abf6..1bc6199713f3 100644
+--- a/drivers/media/i2c/ov01a1s.c
++++ b/drivers/media/i2c/ov01a1s.c
+@@ -970,7 +970,7 @@ static int ov01a1s_parse_dt(struct ov01a1s *ov01a1s)
+ return dev_err_probe(dev, PTR_ERR(ov01a1s->clk), "getting clk\n");
+ #endif
+
+- ov01a1s->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
++ ov01a1s->pled_gpio = devm_gpiod_get_optional(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(ov01a1s->pled_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting pled gpio: %d\n", ret);
+diff --git a/drivers/media/i2c/ov2740.c b/drivers/media/i2c/ov2740.c
+index a8bb101776bd..08f284d4aca1 100644
+--- a/drivers/media/i2c/ov2740.c
++++ b/drivers/media/i2c/ov2740.c
+@@ -594,8 +594,6 @@ static u64 to_pixels_per_line(u32 hts, u32 f_index)
+
+ static void ov2740_set_power(struct ov2740 *ov2740, int on)
+ {
+- if (!(ov2740->reset_gpio && ov2740->pled_gpio))
+- return;
+ gpiod_set_value_cansleep(ov2740->reset_gpio, !on);
+ gpiod_set_value_cansleep(ov2740->pled_gpio, on);
+ msleep(20);
+@@ -633,7 +631,7 @@ static int ov2740_parse_dt(struct ov2740 *ov2740)
+ return ret;
+ }
+
+- ov2740->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
++ ov2740->pled_gpio = devm_gpiod_get_optional(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(ov2740->pled_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting pled gpio: %d\n", ret);
+
+From 5ed1980822f0cb4787d1346493d126aad1bf9210 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Tue, 29 Nov 2022 15:15:15 +0100
+Subject: [PATCH 4/4] ov01a1s: Drop unused link_freq variable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Drop the unused link_freq variable, fixing this compiler warning:
+
+drivers/media/i2c/ov01a1s.c:994:13: warning: unused variable ‘link_freq’ [-Wunused-variable]
+ 994 | s64 link_freq;
+ | ^~~~~~~~~
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/i2c/ov01a1s.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c
+index 1bc6199713f3..ab4ff255d4c1 100644
+--- a/drivers/media/i2c/ov01a1s.c
++++ b/drivers/media/i2c/ov01a1s.c
+@@ -988,7 +988,6 @@ static int ov01a1s_probe(struct i2c_client *client)
+ #if IS_ENABLED(CONFIG_INTEL_VSC)
+ struct vsc_mipi_config conf;
+ struct vsc_camera_status status;
+- s64 link_freq;
+ #endif
+
+ ov01a1s = devm_kzalloc(&client->dev, sizeof(*ov01a1s), GFP_KERNEL);
diff --git a/intel-ipu6-kmod.spec b/intel-ipu6-kmod.spec
index 6397637..00f7604 100644
--- a/intel-ipu6-kmod.spec
+++ b/intel-ipu6-kmod.spec
@@ -3,12 +3,12 @@
%global debug_package %{nil}
%endif
-%global ipu6_commit f83b0747b297cc42325668aaf69471d89253b88e
-%global ipu6_commitdate 20230117
+%global ipu6_commit dfedab03f3856010d37968cb384696038c73c984
+%global ipu6_commitdate 20230220
%global ipu6_shortcommit %(c=%{ipu6_commit}; echo ${c:0:7})
-%global ivsc_commit 94ecb88b3ac238d9145ac16230d6e0779bb4fd32
-%global ivsc_commitdate 20230106
+%global ivsc_commit c8db12b907e2e455d4d5586e5812d1ae0eebd571
+%global ivsc_commitdate 20230510
%global ivsc_shortcommit %(c=%{ivsc_commit}; echo ${c:0:7})
%global prjname intel-ipu6
@@ -16,7 +16,7 @@
Name: %{prjname}-kmod
Summary: Kernel module (kmod) for %{prjname}
Version: 0.0
-Release: 3.%{ipu6_commitdate}git%{ipu6_shortcommit}%{?dist}
+Release: 4.%{ipu6_commitdate}git%{ipu6_shortcommit}%{?dist}
License: GPLv2+
URL: https://github.com/intel
@@ -25,14 +25,9 @@ Source1: %{url}/ipu6-drivers/archive/%{ipu6_commit}/ipu6-drivers-%{ipu6_s
# Patches
-Patch10: 0001-Fix-dmabuf-errors-with-kernel-6.2.patch
-Patch11: 0002-ipu6-psys-Fix-possible-deadlock-with-kernel-6.2.patch
-Patch12: 0003-sensors-Use-clk-framework-instead-of-a-clken-GPIO.patch
-Patch13: 0004-sensors-Make-powerdown-and-reset-signals-active-low-.patch
-Patch14: 0005-sensors-Make-pled-GPIO-optional.patch
-Patch15: 0006-ov01a1s-Drop-unused-link_freq-variable.patch
-Patch16: 0007-Don-t-rename-the-already-registered-PCI-device.patch
-
+Patch10: 0001-cio2-bridge-Fix-compilation-with-kernel.patch
+Patch11: 0002-intel_ipu6_isys-Add-video_nr-module-parameter.patch
+Patch12: 0003-sensors-Use-clk-framework-instead-of-a-clke-GPIO.patch
BuildRequires: gcc
BuildRequires: elfutils-libelf-devel
@@ -62,10 +57,6 @@ kmodtool --target %{_target_cpu} --repo rpmfusion --kmodname %{prjname} %{?buil
%patch10 -p1
%patch11 -p1
%patch12 -p1
-%patch13 -p1
-%patch14 -p1
-%patch15 -p1
-%patch16 -p1
)
cp -Rp ivsc-driver-%{ivsc_commit}/backport-include ipu6-drivers-%{ipu6_commit}/
@@ -111,6 +102,10 @@ done
%changelog
+* Wed May 10 2023 Kate Hsuan <hpa(a)redhat.com> - 0.0-4.20230220gitdfedab0
+- Updated ipu6-driver commit to dfedab03f3856010d37968cb384696038c73c984
+- Updated ivsc-driver commit to c8db12b907e2e455d4d5586e5812d1ae0eebd571
+
* Tue Mar 28 2023 Kate Hsuan <hpa(a)redhat.com> - 0.0-3.20230117gitf83b074
- Fix typo
diff --git a/sources b/sources
index e40f3a6..0a1b75d 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (ipu6-drivers-f83b074.tar.gz) = 4ee0895a03c5027b9ea55de32cc12f87559f15f07285b4e663843baf6061955df2986dc2b85ea3af91722a6a085991799fe96487aa350a13a9a5657567aeece3
-SHA512 (ivsc-driver-94ecb88.tar.gz) = d4a94df8617bdef40abec01ee7c475ccd7601ef40bb0997b8c49fa48224565f3d5acc09f0a80d3c3a4da57135079f1bb4f8f99a401a4901d5434b2adb1396547
+SHA512 (ivsc-driver-c8db12b.tar.gz) = 08e4717b02906a04b5a5386ff43e87a56fe8f9d463d4403f282d7a827d642b2deb4aac4d4404b334d4a4ce43d1d83eb071e8dc6f630bb41ae4266fd54d919267
+SHA512 (ipu6-drivers-dfedab0.tar.gz) = 60ce473d6d5b91368dd7e408ed841ee72d8bc786e5c43a4413566c8a4498231fc069c137763db48855da25c8e2a4658cb0fad9e4d1bb76386475e4fb81b00664
1 year, 6 months
[intel-ipu6-kmod] - Updated ipu6-driver commit to dfedab03f3856010d37968cb384696038c73c984 - Updated ivsc-driver commi
by smallorange
commit 881f85f629fb266abab335beadb037061283a987
Author: Kate Hsuan <hpa(a)redhat.com>
Date: Thu May 11 22:09:32 2023 +0800
- Updated ipu6-driver commit to dfedab03f3856010d37968cb384696038c73c984
- Updated ivsc-driver commit to c8db12b907e2e455d4d5586e5812d1ae0eebd571
.gitignore | 2 +
0001-Fix-dmabuf-errors-with-kernel-6.2.patch | 80 -----
0001-cio2-bridge-Fix-compilation-with-kernel.patch | 90 +++++
...l_ipu6_isys-Add-video_nr-module-parameter.patch | 54 +++
...sys-Fix-possible-deadlock-with-kernel-6.2.patch | 169 ----------
...-Use-clk-framework-instead-of-a-clke-GPIO.patch | 365 +++++++++++++++++++++
...Use-clk-framework-instead-of-a-clken-GPIO.patch | 137 --------
...e-powerdown-and-reset-signals-active-low-.patch | 128 --------
0005-sensors-Make-pled-GPIO-optional.patch | 75 -----
0006-ov01a1s-Drop-unused-link_freq-variable.patch | 34 --
...-rename-the-already-registered-PCI-device.patch | 39 ---
intel-ipu6-kmod.spec | 29 +-
sources | 4 +-
13 files changed, 525 insertions(+), 681 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 6a53ae1..d39d319 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
/ipu6-drivers-f83b074.tar.gz
/ivsc-driver-94ecb88.tar.gz
+/ipu6-drivers-dfedab0.tar.gz
+/ivsc-driver-c8db12b.tar.gz
diff --git a/0001-cio2-bridge-Fix-compilation-with-kernel.patch b/0001-cio2-bridge-Fix-compilation-with-kernel.patch
new file mode 100644
index 0000000..572fa8f
--- /dev/null
+++ b/0001-cio2-bridge-Fix-compilation-with-kernel.patch
@@ -0,0 +1,90 @@
+From c61b117487a720084f4a645f728eed9b953690fa Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Wed, 3 May 2023 10:01:23 +0200
+Subject: [PATCH] cio2-bridge: Fix compilation with kernel >= 6.3
+
+Fix cio2-bridge compilation with kernel 6.3 and later.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/pci/intel/cio2-bridge.c | 29 +++++++++++++++++++++++++++
+ drivers/media/pci/intel/cio2-bridge.h | 3 +++
+ 2 files changed, 32 insertions(+)
+
+diff --git a/drivers/media/pci/intel/cio2-bridge.c b/drivers/media/pci/intel/cio2-bridge.c
+index fe7175ddd4b4..526d0c018b66 100644
+--- a/drivers/media/pci/intel/cio2-bridge.c
++++ b/drivers/media/pci/intel/cio2-bridge.c
+@@ -293,13 +293,33 @@ static void cio2_bridge_unregister_sensors(struct cio2_bridge *bridge)
+
+ for (i = 0; i < bridge->n_sensors; i++) {
+ sensor = &bridge->sensors[i];
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ software_node_unregister_node_group(sensor->group);
++#else
+ software_node_unregister_nodes(sensor->swnodes);
++#endif
+ ACPI_FREE(sensor->pld);
+ acpi_dev_put(sensor->adev);
+ i2c_unregister_device(sensor->vcm_i2c_client);
+ }
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++static void cio2_bridge_init_swnode_group(struct cio2_sensor *sensor)
++{
++ struct software_node *nodes = sensor->swnodes;
++
++ sensor->group[SWNODE_SENSOR_HID] = &nodes[SWNODE_SENSOR_HID];
++ sensor->group[SWNODE_SENSOR_PORT] = &nodes[SWNODE_SENSOR_PORT];
++ sensor->group[SWNODE_SENSOR_ENDPOINT] = &nodes[SWNODE_SENSOR_ENDPOINT];
++ sensor->group[SWNODE_CIO2_PORT] = &nodes[SWNODE_CIO2_PORT];
++ sensor->group[SWNODE_CIO2_ENDPOINT] = &nodes[SWNODE_CIO2_ENDPOINT];
++ if (sensor->ssdb.vcmtype &&
++ sensor->ssdb.vcmtype <= ARRAY_SIZE(cio2_vcm_types))
++ sensor->group[SWNODE_VCM] = &nodes[SWNODE_VCM];
++}
++#endif
++
+ static int cio2_bridge_connect_sensor(const struct cio2_sensor_config *cfg,
+ struct cio2_bridge *bridge,
+ struct pci_dev *cio2)
+@@ -352,7 +372,12 @@ static int cio2_bridge_connect_sensor(const struct cio2_sensor_config *cfg,
+ cio2_bridge_create_fwnode_properties(sensor, bridge, cfg);
+ cio2_bridge_create_connection_swnodes(bridge, sensor);
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ cio2_bridge_init_swnode_group(sensor);
++ software_node_register_node_group(sensor->group);
++#else
+ ret = software_node_register_nodes(sensor->swnodes);
++#endif
+ if (ret)
+ goto err_free_pld;
+
+@@ -379,7 +404,11 @@ static int cio2_bridge_connect_sensor(const struct cio2_sensor_config *cfg,
+ return 0;
+
+ err_free_swnodes:
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ software_node_unregister_node_group(sensor->group);
++#else
+ software_node_unregister_nodes(sensor->swnodes);
++#endif
+ err_free_pld:
+ ACPI_FREE(sensor->pld);
+ err_put_adev:
+diff --git a/drivers/media/pci/intel/cio2-bridge.h b/drivers/media/pci/intel/cio2-bridge.h
+index a0c99ba8f700..77d76dde9b0b 100644
+--- a/drivers/media/pci/intel/cio2-bridge.h
++++ b/drivers/media/pci/intel/cio2-bridge.h
+@@ -121,6 +121,9 @@ struct cio2_sensor {
+
+ /* SWNODE_COUNT + 1 for terminating empty node */
+ struct software_node swnodes[SWNODE_COUNT + 1];
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ const struct software_node *group[SWNODE_COUNT + 1];
++#endif
+ struct cio2_node_names node_names;
+
+ struct cio2_sensor_ssdb ssdb;
diff --git a/0002-intel_ipu6_isys-Add-video_nr-module-parameter.patch b/0002-intel_ipu6_isys-Add-video_nr-module-parameter.patch
new file mode 100644
index 0000000..7d24882
--- /dev/null
+++ b/0002-intel_ipu6_isys-Add-video_nr-module-parameter.patch
@@ -0,0 +1,54 @@
+From 46688d874b61e4c3153b95f8c95e0943625b6e30 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Wed, 3 May 2023 10:07:38 +0200
+Subject: [PATCH] intel_ipu6_isys: Add video_nr module parameter
+
+Add a video_nr module parameter so that the isys /dev/video#
+node can be assigned a fixed number instead of taking the first
+available free number.
+
+Both Ubuntu and Fedora by default use the IPU6 camera stack
+together with v4l2loopback for compat with apps which expect
+a regular video4linux2 device.
+
+Most apps open /dev/video0 by default so we want that to be
+the v4l2loopback device. But currently if the ipu6-drivers
+load first they become /dev/video0.
+
+This new video_nr module parameter allows distros to
+specify a different fixed number for intel_ipu6_isys so that
+v4l2loopback becomes /dev/video0 independent of the probe
+ordering.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/pci/intel/ipu-isys-video.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/media/pci/intel/ipu-isys-video.c b/drivers/media/pci/intel/ipu-isys-video.c
+index 19c255b7bcda..a5e30f047fc4 100644
+--- a/drivers/media/pci/intel/ipu-isys-video.c
++++ b/drivers/media/pci/intel/ipu-isys-video.c
+@@ -38,6 +38,10 @@
+ /* use max resolution pixel rate by default */
+ #define DEFAULT_PIXEL_RATE (360000000ULL * 2 * 4 / 10)
+
++static int video_nr = -1;
++module_param(video_nr, int, 0444);
++MODULE_PARM_DESC(video_nr, "video device number (-1=auto, 0=/dev/video0, etc.)");
++
+ const struct ipu_isys_pixelformat ipu_isys_pfmts_be_soc[] = {
+ {V4L2_PIX_FMT_Y10, 16, 10, 0, MEDIA_BUS_FMT_Y10_1X10,
+ IPU_FW_ISYS_FRAME_FORMAT_RAW16},
+@@ -1877,9 +1881,9 @@ int ipu_isys_video_init(struct ipu_isys_video *av,
+ mutex_lock(&av->mutex);
+
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
+- rval = video_register_device(&av->vdev, VFL_TYPE_GRABBER, -1);
++ rval = video_register_device(&av->vdev, VFL_TYPE_GRABBER, video_nr);
+ #else
+- rval = video_register_device(&av->vdev, VFL_TYPE_VIDEO, -1);
++ rval = video_register_device(&av->vdev, VFL_TYPE_VIDEO, video_nr);
+ #endif
+ if (rval)
+ goto out_media_entity_cleanup;
diff --git a/0003-sensors-Use-clk-framework-instead-of-a-clke-GPIO.patch b/0003-sensors-Use-clk-framework-instead-of-a-clke-GPIO.patch
new file mode 100644
index 0000000..0c7179a
--- /dev/null
+++ b/0003-sensors-Use-clk-framework-instead-of-a-clke-GPIO.patch
@@ -0,0 +1,365 @@
+From 8f4346915bb7e3a3ad3eea2c24b6da09dac257b2 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Tue, 29 Nov 2022 15:06:23 +0100
+Subject: [PATCH 1/4] sensors: Use clk-framework instead of a "clken" GPIO
+
+Use the clk-framework to get a clk-provider reference and use
+clk_prepare_enable() / clk_disable_unprepare() to control the clk.
+
+This replace modelling the clock as a "clken" GPIO, which is not a valid
+way to model it when the clk is e.g. generated by the clk-generator of
+a TPS68470 PMIC.
+
+This relies on the following upstream bugfix for the INT3472 clk provider:
+
+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cf5ac2d45f6e4d11ad78e7b10ae9a4121ba5e995
+
+"platform/x86: int3472/discrete: Ensure the clk/power enable pins are in output mode"
+
+This patch is available since upstream kernel 6.1.7, so the new
+code is only enabled for LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 7)
+
+This allow susing the IPU6 sensor drivers with the upstream int3472
+driver with unmodified upstream kernels >= 6.1.7 .
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/i2c/hm11b1.c | 18 ++++++++++++++++++
+ drivers/media/i2c/ov01a1s.c | 18 ++++++++++++++++++
+ 2 files changed, 36 insertions(+)
+
+diff --git a/drivers/media/i2c/hm11b1.c b/drivers/media/i2c/hm11b1.c
+index 1cc5cd761fbf..e14810bdd612 100644
+--- a/drivers/media/i2c/hm11b1.c
++++ b/drivers/media/i2c/hm11b1.c
+@@ -468,8 +468,13 @@ struct hm11b1 {
+ struct gpio_desc *reset_gpio;
+ /* GPIO for powerdown */
+ struct gpio_desc *powerdown_gpio;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ /* GPIO for clock enable */
+ struct gpio_desc *clken_gpio;
++#else
++ /* Clock provider */
++ struct clk *clk;
++#endif
+ /* GPIO for privacy LED */
+ struct gpio_desc *pled_gpio;
+ #endif
+@@ -508,7 +513,14 @@ static void hm11b1_set_power(struct hm11b1 *hm11b1, int on)
+ return;
+ gpiod_set_value_cansleep(hm11b1->reset_gpio, on);
+ gpiod_set_value_cansleep(hm11b1->powerdown_gpio, on);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ gpiod_set_value_cansleep(hm11b1->clken_gpio, on);
++#else
++ if (on)
++ clk_prepare_enable(hm11b1->clk);
++ else
++ clk_disable_unprepare(hm11b1->clk);
++#endif
+ gpiod_set_value_cansleep(hm11b1->pled_gpio, on);
+ msleep(20);
+ #elif IS_ENABLED(CONFIG_POWER_CTRL_LOGIC)
+@@ -1093,12 +1105,18 @@ static int hm11b1_parse_dt(struct hm11b1 *hm11b1)
+ return ret;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ hm11b1->clken_gpio = devm_gpiod_get(dev, "clken", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(hm11b1->clken_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting clken_gpio gpio: %d\n", ret);
+ return ret;
+ }
++#else
++ hm11b1->clk = devm_clk_get_optional(dev, "clk");
++ if (IS_ERR(hm11b1->clk))
++ return dev_err_probe(dev, PTR_ERR(hm11b1->clk), "getting clk\n");
++#endif
+
+ hm11b1->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(hm11b1->pled_gpio);
+diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c
+index e4477625ce3b..628a1dd83ddf 100644
+--- a/drivers/media/i2c/ov01a1s.c
++++ b/drivers/media/i2c/ov01a1s.c
+@@ -317,8 +317,13 @@ struct ov01a1s {
+ struct gpio_desc *reset_gpio;
+ /* GPIO for powerdown */
+ struct gpio_desc *powerdown_gpio;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ /* GPIO for clock enable */
+ struct gpio_desc *clken_gpio;
++#else
++ /* Clock provider */
++ struct clk *clk;
++#endif
+ /* GPIO for privacy LED */
+ struct gpio_desc *pled_gpio;
+ #endif
+@@ -339,7 +344,14 @@ static void ov01a1s_set_power(struct ov01a1s *ov01a1s, int on)
+ return;
+ gpiod_set_value_cansleep(ov01a1s->reset_gpio, on);
+ gpiod_set_value_cansleep(ov01a1s->powerdown_gpio, on);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ gpiod_set_value_cansleep(ov01a1s->clken_gpio, on);
++#else
++ if (on)
++ clk_prepare_enable(ov01a1s->clk);
++ else
++ clk_disable_unprepare(ov01a1s->clk);
++#endif
+ gpiod_set_value_cansleep(ov01a1s->pled_gpio, on);
+ msleep(20);
+ #elif IS_ENABLED(CONFIG_POWER_CTRL_LOGIC)
+@@ -945,12 +957,18 @@ static int ov01a1s_parse_dt(struct ov01a1s *ov01a1s)
+ return -EPROBE_DEFER;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ ov01a1s->clken_gpio = devm_gpiod_get(dev, "clken", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(ov01a1s->clken_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting clken_gpio gpio: %d\n", ret);
+ return -EPROBE_DEFER;
+ }
++#else
++ ov01a1s->clk = devm_clk_get_optional(dev, "clk");
++ if (IS_ERR(ov01a1s->clk))
++ return dev_err_probe(dev, PTR_ERR(ov01a1s->clk), "getting clk\n");
++#endif
+
+ ov01a1s->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(ov01a1s->pled_gpio);
+
+From b04fdf6433f6b64840d46f92ddf3d6d18e86ede3 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Tue, 29 Nov 2022 23:37:50 +0100
+Subject: [PATCH 2/4] sensors: Make powerdown and reset signals active-low by
+ default
+
+The powerdown and reset functions should be set to 0, as in
+not-powered-down, not-in-reset when the sensor is turned on.
+
+Adjust the gpiod_set() value parameters for the powerdown_gpio
+and reset_gpio to !on to properly reflect this.
+
+Typical sensors however have a NRESET aka /RESET pin which needs
+to be driven low to put the device in reset and the have
+a powerup/enable pin rather then a powerdown pin. So at
+the physicical level the pins associated with the reset and
+powerdown functions need to be driven low to put the chip
+in reset / to power the chip down. Mark the pins as active-low
+in the added gpio-lookup table entries for these pin to
+reflect this.
+
+This double negation has 0 net effect, but it uses the GPIO
+subsystem functionality as intended (setting reset to 0
+on poweron makes lot more sense then setting it to 1 on poweron)
+and it aligns the use of these GPIOs with that of the mainline
+kernel allowing future use of the IPU6 driver with the
+mainline INT3472 driver without needing to patch the mainline
+kernel.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/i2c/hm11b1.c | 4 ++--
+ drivers/media/i2c/ov01a1s.c | 4 ++--
+ drivers/media/i2c/ov2740.c | 2 +-
+ ...nt3472-support-independent-clock-and-LED-gpios-5.17+.patch | 4 ++--
+ patch/int3472-support-independent-clock-and-LED-gpios.patch | 4 ++--
+ 5 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/media/i2c/hm11b1.c b/drivers/media/i2c/hm11b1.c
+index e14810bdd612..652e8f177044 100644
+--- a/drivers/media/i2c/hm11b1.c
++++ b/drivers/media/i2c/hm11b1.c
+@@ -511,8 +511,8 @@ static void hm11b1_set_power(struct hm11b1 *hm11b1, int on)
+ #if IS_ENABLED(CONFIG_INTEL_SKL_INT3472)
+ if (!(hm11b1->reset_gpio && hm11b1->powerdown_gpio))
+ return;
+- gpiod_set_value_cansleep(hm11b1->reset_gpio, on);
+- gpiod_set_value_cansleep(hm11b1->powerdown_gpio, on);
++ gpiod_set_value_cansleep(hm11b1->reset_gpio, !on);
++ gpiod_set_value_cansleep(hm11b1->powerdown_gpio, !on);
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ gpiod_set_value_cansleep(hm11b1->clken_gpio, on);
+ #else
+diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c
+index 628a1dd83ddf..2ce81d04abf6 100644
+--- a/drivers/media/i2c/ov01a1s.c
++++ b/drivers/media/i2c/ov01a1s.c
+@@ -342,8 +342,8 @@ static void ov01a1s_set_power(struct ov01a1s *ov01a1s, int on)
+ #if IS_ENABLED(CONFIG_INTEL_SKL_INT3472)
+ if (!(ov01a1s->reset_gpio && ov01a1s->powerdown_gpio))
+ return;
+- gpiod_set_value_cansleep(ov01a1s->reset_gpio, on);
+- gpiod_set_value_cansleep(ov01a1s->powerdown_gpio, on);
++ gpiod_set_value_cansleep(ov01a1s->reset_gpio, !on);
++ gpiod_set_value_cansleep(ov01a1s->powerdown_gpio, !on);
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 7)
+ gpiod_set_value_cansleep(ov01a1s->clken_gpio, on);
+ #else
+diff --git a/drivers/media/i2c/ov2740.c b/drivers/media/i2c/ov2740.c
+index 67fb17e08e36..a8bb101776bd 100644
+--- a/drivers/media/i2c/ov2740.c
++++ b/drivers/media/i2c/ov2740.c
+@@ -596,7 +596,7 @@ static void ov2740_set_power(struct ov2740 *ov2740, int on)
+ {
+ if (!(ov2740->reset_gpio && ov2740->pled_gpio))
+ return;
+- gpiod_set_value_cansleep(ov2740->reset_gpio, on);
++ gpiod_set_value_cansleep(ov2740->reset_gpio, !on);
+ gpiod_set_value_cansleep(ov2740->pled_gpio, on);
+ msleep(20);
+ }
+diff --git a/patch/int3472-support-independent-clock-and-LED-gpios-5.17+.patch b/patch/int3472-support-independent-clock-and-LED-gpios-5.17+.patch
+index 57373ac85f39..66ed770b68a0 100644
+--- a/patch/int3472-support-independent-clock-and-LED-gpios-5.17+.patch
++++ b/patch/int3472-support-independent-clock-and-LED-gpios-5.17+.patch
+@@ -65,7 +65,7 @@ index ed4c9d760757..f5857ec334fa 100644
+ case INT3472_GPIO_TYPE_RESET:
+ ret = skl_int3472_map_gpio_to_sensor(int3472, agpio, "reset",
+ - GPIO_ACTIVE_LOW);
+-+ polarity);
+++ polarity ^ GPIO_ACTIVE_LOW);
+ if (ret)
+ err_msg = "Failed to map reset pin to sensor\n";
+
+@@ -73,7 +73,7 @@ index ed4c9d760757..f5857ec334fa 100644
+ case INT3472_GPIO_TYPE_POWERDOWN:
+ ret = skl_int3472_map_gpio_to_sensor(int3472, agpio, "powerdown",
+ - GPIO_ACTIVE_LOW);
+-+ polarity);
+++ polarity ^ GPIO_ACTIVE_LOW);
+ if (ret)
+ err_msg = "Failed to map powerdown pin to sensor\n";
+
+diff --git a/patch/int3472-support-independent-clock-and-LED-gpios.patch b/patch/int3472-support-independent-clock-and-LED-gpios.patch
+index a2def0d76852..df70ce4a7117 100644
+--- a/patch/int3472-support-independent-clock-and-LED-gpios.patch
++++ b/patch/int3472-support-independent-clock-and-LED-gpios.patch
+@@ -65,7 +65,7 @@ index e59d79c7e82f..5cf6dd63d43f 100644
+ case INT3472_GPIO_TYPE_RESET:
+ ret = skl_int3472_map_gpio_to_sensor(int3472, agpio, "reset",
+ - GPIO_ACTIVE_LOW);
+-+ polarity);
+++ polarity ^ GPIO_ACTIVE_LOW);
+ if (ret)
+ err_msg = "Failed to map reset pin to sensor\n";
+
+@@ -73,7 +73,7 @@ index e59d79c7e82f..5cf6dd63d43f 100644
+ case INT3472_GPIO_TYPE_POWERDOWN:
+ ret = skl_int3472_map_gpio_to_sensor(int3472, agpio, "powerdown",
+ - GPIO_ACTIVE_LOW);
+-+ polarity);
+++ polarity ^ GPIO_ACTIVE_LOW);
+ if (ret)
+ err_msg = "Failed to map powerdown pin to sensor\n";
+
+
+From 90d4b2d9cb07292c6a2580572252938a836f4a86 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Thu, 15 Dec 2022 16:00:31 +0100
+Subject: [PATCH 3/4] sensors: Make "pled" GPIO optional
+
+Starting with kernel 6.3 the mainline int3472 driver models the privacy
+LED device as a LED class device rather then as a GPIO.
+
+As part of these changed the v4l2-core subdev code in 6.3 turns
+the LED on/off on s_stream() on/off calls on the sensor v4l2-subdev,
+so sensor drivers don't have to take care of this themselves.
+
+Change the devm_gpiod_get() calls for the "pled" GPIO into
+devm_gpiod_get_optional() calls so that the sensor drivers
+can work with both older kernel (controlling the GPIO) and
+with newer kernels which don't have a "pled" GPIO.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/i2c/hm11b1.c | 2 +-
+ drivers/media/i2c/ov01a1s.c | 2 +-
+ drivers/media/i2c/ov2740.c | 4 +---
+ 3 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/media/i2c/hm11b1.c b/drivers/media/i2c/hm11b1.c
+index 652e8f177044..6257f7987268 100644
+--- a/drivers/media/i2c/hm11b1.c
++++ b/drivers/media/i2c/hm11b1.c
+@@ -1118,7 +1118,7 @@ static int hm11b1_parse_dt(struct hm11b1 *hm11b1)
+ return dev_err_probe(dev, PTR_ERR(hm11b1->clk), "getting clk\n");
+ #endif
+
+- hm11b1->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
++ hm11b1->pled_gpio = devm_gpiod_get_optional(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(hm11b1->pled_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting pled gpio: %d\n", ret);
+diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c
+index 2ce81d04abf6..1bc6199713f3 100644
+--- a/drivers/media/i2c/ov01a1s.c
++++ b/drivers/media/i2c/ov01a1s.c
+@@ -970,7 +970,7 @@ static int ov01a1s_parse_dt(struct ov01a1s *ov01a1s)
+ return dev_err_probe(dev, PTR_ERR(ov01a1s->clk), "getting clk\n");
+ #endif
+
+- ov01a1s->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
++ ov01a1s->pled_gpio = devm_gpiod_get_optional(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(ov01a1s->pled_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting pled gpio: %d\n", ret);
+diff --git a/drivers/media/i2c/ov2740.c b/drivers/media/i2c/ov2740.c
+index a8bb101776bd..08f284d4aca1 100644
+--- a/drivers/media/i2c/ov2740.c
++++ b/drivers/media/i2c/ov2740.c
+@@ -594,8 +594,6 @@ static u64 to_pixels_per_line(u32 hts, u32 f_index)
+
+ static void ov2740_set_power(struct ov2740 *ov2740, int on)
+ {
+- if (!(ov2740->reset_gpio && ov2740->pled_gpio))
+- return;
+ gpiod_set_value_cansleep(ov2740->reset_gpio, !on);
+ gpiod_set_value_cansleep(ov2740->pled_gpio, on);
+ msleep(20);
+@@ -633,7 +631,7 @@ static int ov2740_parse_dt(struct ov2740 *ov2740)
+ return ret;
+ }
+
+- ov2740->pled_gpio = devm_gpiod_get(dev, "pled", GPIOD_OUT_HIGH);
++ ov2740->pled_gpio = devm_gpiod_get_optional(dev, "pled", GPIOD_OUT_HIGH);
+ ret = PTR_ERR_OR_ZERO(ov2740->pled_gpio);
+ if (ret < 0) {
+ dev_err(dev, "error while getting pled gpio: %d\n", ret);
+
+From 5ed1980822f0cb4787d1346493d126aad1bf9210 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Tue, 29 Nov 2022 15:15:15 +0100
+Subject: [PATCH 4/4] ov01a1s: Drop unused link_freq variable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Drop the unused link_freq variable, fixing this compiler warning:
+
+drivers/media/i2c/ov01a1s.c:994:13: warning: unused variable ‘link_freq’ [-Wunused-variable]
+ 994 | s64 link_freq;
+ | ^~~~~~~~~
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/i2c/ov01a1s.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c
+index 1bc6199713f3..ab4ff255d4c1 100644
+--- a/drivers/media/i2c/ov01a1s.c
++++ b/drivers/media/i2c/ov01a1s.c
+@@ -988,7 +988,6 @@ static int ov01a1s_probe(struct i2c_client *client)
+ #if IS_ENABLED(CONFIG_INTEL_VSC)
+ struct vsc_mipi_config conf;
+ struct vsc_camera_status status;
+- s64 link_freq;
+ #endif
+
+ ov01a1s = devm_kzalloc(&client->dev, sizeof(*ov01a1s), GFP_KERNEL);
diff --git a/intel-ipu6-kmod.spec b/intel-ipu6-kmod.spec
index 6397637..00f7604 100644
--- a/intel-ipu6-kmod.spec
+++ b/intel-ipu6-kmod.spec
@@ -3,12 +3,12 @@
%global debug_package %{nil}
%endif
-%global ipu6_commit f83b0747b297cc42325668aaf69471d89253b88e
-%global ipu6_commitdate 20230117
+%global ipu6_commit dfedab03f3856010d37968cb384696038c73c984
+%global ipu6_commitdate 20230220
%global ipu6_shortcommit %(c=%{ipu6_commit}; echo ${c:0:7})
-%global ivsc_commit 94ecb88b3ac238d9145ac16230d6e0779bb4fd32
-%global ivsc_commitdate 20230106
+%global ivsc_commit c8db12b907e2e455d4d5586e5812d1ae0eebd571
+%global ivsc_commitdate 20230510
%global ivsc_shortcommit %(c=%{ivsc_commit}; echo ${c:0:7})
%global prjname intel-ipu6
@@ -16,7 +16,7 @@
Name: %{prjname}-kmod
Summary: Kernel module (kmod) for %{prjname}
Version: 0.0
-Release: 3.%{ipu6_commitdate}git%{ipu6_shortcommit}%{?dist}
+Release: 4.%{ipu6_commitdate}git%{ipu6_shortcommit}%{?dist}
License: GPLv2+
URL: https://github.com/intel
@@ -25,14 +25,9 @@ Source1: %{url}/ipu6-drivers/archive/%{ipu6_commit}/ipu6-drivers-%{ipu6_s
# Patches
-Patch10: 0001-Fix-dmabuf-errors-with-kernel-6.2.patch
-Patch11: 0002-ipu6-psys-Fix-possible-deadlock-with-kernel-6.2.patch
-Patch12: 0003-sensors-Use-clk-framework-instead-of-a-clken-GPIO.patch
-Patch13: 0004-sensors-Make-powerdown-and-reset-signals-active-low-.patch
-Patch14: 0005-sensors-Make-pled-GPIO-optional.patch
-Patch15: 0006-ov01a1s-Drop-unused-link_freq-variable.patch
-Patch16: 0007-Don-t-rename-the-already-registered-PCI-device.patch
-
+Patch10: 0001-cio2-bridge-Fix-compilation-with-kernel.patch
+Patch11: 0002-intel_ipu6_isys-Add-video_nr-module-parameter.patch
+Patch12: 0003-sensors-Use-clk-framework-instead-of-a-clke-GPIO.patch
BuildRequires: gcc
BuildRequires: elfutils-libelf-devel
@@ -62,10 +57,6 @@ kmodtool --target %{_target_cpu} --repo rpmfusion --kmodname %{prjname} %{?buil
%patch10 -p1
%patch11 -p1
%patch12 -p1
-%patch13 -p1
-%patch14 -p1
-%patch15 -p1
-%patch16 -p1
)
cp -Rp ivsc-driver-%{ivsc_commit}/backport-include ipu6-drivers-%{ipu6_commit}/
@@ -111,6 +102,10 @@ done
%changelog
+* Wed May 10 2023 Kate Hsuan <hpa(a)redhat.com> - 0.0-4.20230220gitdfedab0
+- Updated ipu6-driver commit to dfedab03f3856010d37968cb384696038c73c984
+- Updated ivsc-driver commit to c8db12b907e2e455d4d5586e5812d1ae0eebd571
+
* Tue Mar 28 2023 Kate Hsuan <hpa(a)redhat.com> - 0.0-3.20230117gitf83b074
- Fix typo
diff --git a/sources b/sources
index e40f3a6..0a1b75d 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (ipu6-drivers-f83b074.tar.gz) = 4ee0895a03c5027b9ea55de32cc12f87559f15f07285b4e663843baf6061955df2986dc2b85ea3af91722a6a085991799fe96487aa350a13a9a5657567aeece3
-SHA512 (ivsc-driver-94ecb88.tar.gz) = d4a94df8617bdef40abec01ee7c475ccd7601ef40bb0997b8c49fa48224565f3d5acc09f0a80d3c3a4da57135079f1bb4f8f99a401a4901d5434b2adb1396547
+SHA512 (ivsc-driver-c8db12b.tar.gz) = 08e4717b02906a04b5a5386ff43e87a56fe8f9d463d4403f282d7a827d642b2deb4aac4d4404b334d4a4ce43d1d83eb071e8dc6f630bb41ae4266fd54d919267
+SHA512 (ipu6-drivers-dfedab0.tar.gz) = 60ce473d6d5b91368dd7e408ed841ee72d8bc786e5c43a4413566c8a4498231fc069c137763db48855da25c8e2a4658cb0fad9e4d1bb76386475e4fb81b00664
1 year, 6 months
[mixxx/f36] New upstream release 2.3.5
by Uwe Klotz
commit 5f235bda4c526b1276470ab3674a013708e28c90
Author: Uwe Klotz <uwe.klotz(a)gmail.com>
Date: Wed May 10 22:14:04 2023 +0200
New upstream release 2.3.5
mixxx.spec | 5 ++++-
sources | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/mixxx.spec b/mixxx.spec
index 1771f09..836de04 100644
--- a/mixxx.spec
+++ b/mixxx.spec
@@ -24,7 +24,7 @@
%endif
Name: mixxx
-Version: 2.3.4
+Version: 2.3.5
Release: 1%{?extraver:.%{extraver}}%{?snapinfo:.%{snapinfo}}%{?dist}
Summary: Mixxx is open source software for DJ'ing
License: GPLv2+
@@ -214,6 +214,9 @@ appstreamcli \
%{_udevrulesdir}/69-%{name}-usb-uaccess.rules
%changelog
+* Wed May 10 2023 Uwe Klotz <uklotz(a)gmail.com> - 2.3.5-1
+- New upstream release 2.3.5
+
* Fri Mar 03 2023 Uwe Klotz <uklotz(a)mixxx.org> - 2.3.4-1
- New upstream release 2.3.4
diff --git a/sources b/sources
index e1f53a7..6382f53 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (libkeyfinder-2.2.6.zip) = 23ffcc4da59019349824b60dd1b125d559f39d7731fe7f00cdc8f4a97a342fa59ef5183c4e272ff4c5fd06eaa89c581e07fdb26bcfd3c98cc42d2dcc29e13e1e
-SHA512 (mixxx-2.3.4.tar.gz) = 75f5c1c6eb887072f0faa31bd469b79f5d03ea6df9174a8743adb2d8811f229c8f16d0d28931fe4810760af17376d254252500ff5825dcf21b20d03e763a78c9
+SHA512 (mixxx-2.3.5.tar.gz) = d81208e8fe91e1843bac7ab512dc248457266b935bf8720694f2bedf96389ba35789d68ea77fcecf0a02682fb75de2752612b2c44a49b8eba52323cab2b82e51
1 year, 6 months
[mixxx/f37] New upstream release 2.3.5
by Uwe Klotz
commit 009391996d1ac952a3f096db88ea5a808db6a15f
Author: Uwe Klotz <uwe.klotz(a)gmail.com>
Date: Wed May 10 22:14:04 2023 +0200
New upstream release 2.3.5
mixxx.spec | 5 ++++-
sources | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/mixxx.spec b/mixxx.spec
index 6f83ef9..cfcac8d 100644
--- a/mixxx.spec
+++ b/mixxx.spec
@@ -24,7 +24,7 @@
%endif
Name: mixxx
-Version: 2.3.4
+Version: 2.3.5
Release: 1%{?extraver:.%{extraver}}%{?snapinfo:.%{snapinfo}}%{?dist}
Summary: Mixxx is open source software for DJ'ing
License: GPLv2+
@@ -214,6 +214,9 @@ appstreamcli \
%{_udevrulesdir}/69-%{name}-usb-uaccess.rules
%changelog
+* Wed May 10 2023 Uwe Klotz <uklotz(a)gmail.com> - 2.3.5-1
+- New upstream release 2.3.5
+
* Fri Mar 03 2023 Uwe Klotz <uklotz(a)mixxx.org> - 2.3.4-1
- New upstream release 2.3.4
diff --git a/sources b/sources
index e1f53a7..6382f53 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (libkeyfinder-2.2.6.zip) = 23ffcc4da59019349824b60dd1b125d559f39d7731fe7f00cdc8f4a97a342fa59ef5183c4e272ff4c5fd06eaa89c581e07fdb26bcfd3c98cc42d2dcc29e13e1e
-SHA512 (mixxx-2.3.4.tar.gz) = 75f5c1c6eb887072f0faa31bd469b79f5d03ea6df9174a8743adb2d8811f229c8f16d0d28931fe4810760af17376d254252500ff5825dcf21b20d03e763a78c9
+SHA512 (mixxx-2.3.5.tar.gz) = d81208e8fe91e1843bac7ab512dc248457266b935bf8720694f2bedf96389ba35789d68ea77fcecf0a02682fb75de2752612b2c44a49b8eba52323cab2b82e51
1 year, 6 months
[mixxx] New upstream release 2.3.5
by Uwe Klotz
commit b2086aeab2fbaaeea1624fd63c6aa4e009914f70
Author: Uwe Klotz <uwe.klotz(a)gmail.com>
Date: Wed May 10 22:14:04 2023 +0200
New upstream release 2.3.5
aarch64_asm_operand_widths.patch | 29 -----------------------------
basetrackcache.patch | 15 ---------------
disable_werror_in_tests.patch | 19 -------------------
fidlib-fno-finite-math.patch | 20 --------------------
mixxx.spec | 11 +++++------
sources | 2 +-
6 files changed, 6 insertions(+), 90 deletions(-)
---
diff --git a/mixxx.spec b/mixxx.spec
index d21341b..b691a42 100644
--- a/mixxx.spec
+++ b/mixxx.spec
@@ -24,8 +24,8 @@
%endif
Name: mixxx
-Version: 2.3.4
-Release: 4%{?extraver:.%{extraver}}%{?snapinfo:.%{snapinfo}}%{?dist}
+Version: 2.3.5
+Release: 1%{?extraver:.%{extraver}}%{?snapinfo:.%{snapinfo}}%{?dist}
Summary: Mixxx is open source software for DJ'ing
License: GPLv2+
URL: http://www.mixxx.org
@@ -33,10 +33,6 @@ Source0: https://github.com/mixxxdj/%{name}/archive/%{sources}/%{name}-%{
# Append the actual downloaded file name with a preceding slash '/'
# as a fragment identifier to the URL to populate SOURCE1 correctly
Source1: https://github.com/mixxxdj/libkeyfinder/archive/refs/tags/v%{libkeyfinder...
-Patch0: disable_werror_in_tests.patch
-Patch1: aarch64_asm_operand_widths.patch
-Patch2: fidlib-fno-finite-math.patch
-Patch3: basetrackcache.patch
# Build Tools
BuildRequires: desktop-file-utils
@@ -214,6 +210,9 @@ appstreamcli \
%{_udevrulesdir}/69-%{name}-usb-uaccess.rules
%changelog
+* Wed May 10 2023 Uwe Klotz <uklotz(a)gmail.com> - 2.3.5-1
+- New upstream release 2.3.5
+
* Sat Apr 22 2023 Uwe Klotz <uklotz(a)gmail.com> - 2.3.4-4
- Switch back to GCC 13
diff --git a/sources b/sources
index e1f53a7..6382f53 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (libkeyfinder-2.2.6.zip) = 23ffcc4da59019349824b60dd1b125d559f39d7731fe7f00cdc8f4a97a342fa59ef5183c4e272ff4c5fd06eaa89c581e07fdb26bcfd3c98cc42d2dcc29e13e1e
-SHA512 (mixxx-2.3.4.tar.gz) = 75f5c1c6eb887072f0faa31bd469b79f5d03ea6df9174a8743adb2d8811f229c8f16d0d28931fe4810760af17376d254252500ff5825dcf21b20d03e763a78c9
+SHA512 (mixxx-2.3.5.tar.gz) = d81208e8fe91e1843bac7ab512dc248457266b935bf8720694f2bedf96389ba35789d68ea77fcecf0a02682fb75de2752612b2c44a49b8eba52323cab2b82e51
1 year, 6 months
[v4l2loopback] Updated to commit 2c9b67072b15d903fecde67c7f269abeafee4c25
by smallorange
commit 552fd2d6a022f83dd47f268f4cb601a948d842fd
Author: Kate Hsuan <hpa(a)redhat.com>
Date: Tue May 9 17:18:34 2023 +0800
Updated to commit 2c9b67072b15d903fecde67c7f269abeafee4c25
sources | 2 +-
v4l2loopback.spec | 7 +++++--
2 files changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/sources b/sources
index c387252..f1b1d48 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (v4l2loopback-a669686.tar.gz) = f8a72c6eabc1a1517be53656e4a707a7a58953617b3a29486dae7e4815a0ae7a47b87212b91bf86601b206ee596ab30b430a70b110a5e231054ee5cbab1a615c
+SHA512 (v4l2loopback-2c9b670.tar.gz) = 77a6a6c757b496d3d2cc12c3adf6353c652d3c4f78e5deaa4c763fbd4aa5b70e356a49624a7988dab12e0645b7f51ede00b27fb8c209fb5293192bc3c1284557
diff --git a/v4l2loopback.spec b/v4l2loopback.spec
index 6058075..b1cdb88 100644
--- a/v4l2loopback.spec
+++ b/v4l2loopback.spec
@@ -1,5 +1,5 @@
-%global commit a66968647843f57448b59cf98d0318f1e98e072c
-%global commitdate 20230220
+%global commit 2c9b67072b15d903fecde67c7f269abeafee4c25
+%global commitdate 20230503
%global shortcommit %(c=%{commit}; echo ${c:0:7})
Name: v4l2loopback
@@ -56,6 +56,9 @@ install -D -m 0644 %{SOURCE2} %{buildroot}%{_modulesloaddir}/v4l2loopback.conf
%changelog
+* Tue May 09 2023 Kate Hsuan <hpa(a)redhat.com> - 0.12.7-20230503g2c9b670-1
+- Updated to commit 2c9b67072b15d903fecde67c7f269abeafee4c25
+
* Mon Mar 06 2023 Kate Hsuan <hpa(a)redhat.com> - 0.12.7-20230220ga669686-1
- Updated to commit a66968647843f57448b59cf98d0318f1e98e072c
1 year, 6 months
[v4l2loopback-kmod] Add the patch file
by smallorange
commit 67d610b92124dd8df432152360fe0eb22afa8f4b
Author: Kate Hsuan <hpa(a)redhat.com>
Date: Tue May 9 17:26:51 2023 +0800
Add the patch file
...k-Fixup-bytesused-field-when-writer-sends.patch | 106 +++++++++++++++++++++
1 file changed, 106 insertions(+)
---
diff --git a/0001-v4l2loopback-Fixup-bytesused-field-when-writer-sends.patch b/0001-v4l2loopback-Fixup-bytesused-field-when-writer-sends.patch
new file mode 100644
index 0000000..70db1f4
--- /dev/null
+++ b/0001-v4l2loopback-Fixup-bytesused-field-when-writer-sends.patch
@@ -0,0 +1,106 @@
+From 702e4024f2bc460cd2fe880dd6e08f1c3b9a38d1 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Mon, 8 May 2023 12:08:12 +0200
+Subject: [PATCH] v4l2loopback: Fixup bytesused field when writer sends a too
+ large value
+
+Gstreamer's v4l2sink is known to submit buffers with bytesused set to
+the length of the buffer instead of the size of the actual image-data
+within the buffer which is typically smaller due to buffer sizes
+being rounded op to a page-size:
+
+https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2532
+
+Despite this being a long standing issue and their being 2 merge-reqs:
+
+https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3713
+https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4527
+
+to try and fix this it looks like this is not going to get fixed
+in gst's v4l2sink anytime soon and even if once it is fixed many users
+will likely be using an older v4l2sink which still has this bug.
+
+These buffers with a too large bytes used value are causing issues
+with various apps which reject these buffers when reading from
+the v4l2loopback device, such as e.g. ffmpeg and firefox.
+
+Add a pix_format_has_valid_sizeimage flag which gets set from
+vidioc_s_fmt_out() if dev->pix_format.sizeimage is known to have just
+been set to a valid, fixed size (so this e.g. won't be set for MJPG).
+
+And then fix this issue by making vidioc_qbuf() truncate
+V4L2_BUF_TYPE_VIDEO_OUTPUT buffer's bytes_used value to
+dev->pix_format.sizeimage when this flag is set.
+
+Closes #190
+Closes #448
+Obsoletes #435
+---
+ v4l2loopback.c | 30 +++++++++++++++++++++++++++++-
+ 1 file changed, 29 insertions(+), 1 deletion(-)
+
+diff --git a/v4l2loopback.c b/v4l2loopback.c
+index 7858e31..2168239 100644
+--- a/v4l2loopback.c
++++ b/v4l2loopback.c
+@@ -297,6 +297,7 @@ struct v4l2_loopback_device {
+ struct video_device *vdev;
+ /* pixel and stream format */
+ struct v4l2_pix_format pix_format;
++ bool pix_format_has_valid_sizeimage;
+ struct v4l2_captureparm capture_param;
+ unsigned long frame_jiffies;
+
+@@ -543,6 +544,20 @@ static int v4l2l_fill_format(struct v4l2_format *fmt, int capture,
+ return 0;
+ }
+
++/* Checks if v4l2l_fill_format() has set a valid, fixed sizeimage val. */
++static bool v4l2l_pix_format_has_valid_sizeimage(struct v4l2_format *fmt)
++{
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 2, 0)
++ const struct v4l2_format_info *info;
++
++ info = v4l2_format_info(fmt->fmt.pix.pixelformat);
++ if (info && info->mem_planes == 1)
++ return true;
++#endif
++
++ return false;
++}
++
+ static int pix_format_eq(const struct v4l2_pix_format *ref,
+ const struct v4l2_pix_format *tgt, int strict)
+ {
+@@ -1220,6 +1235,8 @@ static int vidioc_s_fmt_out(struct file *file, void *priv,
+ ret = inner_try_setfmt(file, fmt);
+ if (!ret) {
+ dev->pix_format = fmt->fmt.pix;
++ dev->pix_format_has_valid_sizeimage =
++ v4l2l_pix_format_has_valid_sizeimage(fmt);
+ dprintk("s_fmt_out(%d) %d...%d\n", ret, dev->ready_for_capture,
+ dev->pix_format.sizeimage);
+ dprintk("outFOURCC=%s\n",
+@@ -1717,7 +1734,18 @@ static int vidioc_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
+ b->buffer.timestamp = buf->timestamp;
+ b->buffer.flags |= V4L2_BUF_FLAG_TIMESTAMP_COPY;
+ }
+- b->buffer.bytesused = buf->bytesused;
++ if (dev->pix_format_has_valid_sizeimage) {
++ if (buf->bytesused >= dev->pix_format.sizeimage) {
++ b->buffer.bytesused = dev->pix_format.sizeimage;
++ } else {
++ dev_warn_ratelimited(&dev->vdev->dev, "warning queued output buffer bytesused too small %d < %d\n",
++ buf->bytesused, dev->pix_format.sizeimage);
++ b->buffer.bytesused = buf->bytesused;
++ }
++ } else {
++ b->buffer.bytesused = buf->bytesused;
++ }
++
+ set_done(b);
+ buffer_written(dev, b);
+
+--
+2.40.1
+
1 year, 6 months
[v4l2loopback-kmod] - Updated to commit 2c9b67072b15d903fecde67c7f269abeafee4c25 - The patch is used to prevent the valu
by smallorange
commit 08df8d83a3b1c49ee4983145429f2e1df1136cfd
Author: Kate Hsuan <hpa(a)redhat.com>
Date: Tue May 9 17:25:50 2023 +0800
- Updated to commit 2c9b67072b15d903fecde67c7f269abeafee4c25
- The patch is used to prevent the value of byteused field becomes too large
sources | 2 +-
v4l2loopback-kmod.spec | 14 ++++++++++++--
2 files changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/sources b/sources
index c387252..f1b1d48 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (v4l2loopback-a669686.tar.gz) = f8a72c6eabc1a1517be53656e4a707a7a58953617b3a29486dae7e4815a0ae7a47b87212b91bf86601b206ee596ab30b430a70b110a5e231054ee5cbab1a615c
+SHA512 (v4l2loopback-2c9b670.tar.gz) = 77a6a6c757b496d3d2cc12c3adf6353c652d3c4f78e5deaa4c763fbd4aa5b70e356a49624a7988dab12e0645b7f51ede00b27fb8c209fb5293192bc3c1284557
diff --git a/v4l2loopback-kmod.spec b/v4l2loopback-kmod.spec
index 0077e9b..54bc25f 100644
--- a/v4l2loopback-kmod.spec
+++ b/v4l2loopback-kmod.spec
@@ -9,8 +9,8 @@
%endif
%global debug_package %{nil}
-%global commit a66968647843f57448b59cf98d0318f1e98e072c
-%global commitdate 20230220
+%global commit 2c9b67072b15d903fecde67c7f269abeafee4c25
+%global commitdate 20230503
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global prjname v4l2loopback
@@ -24,6 +24,8 @@ License: GPLv2+
URL: https://github.com/umlaeute/v4l2loopback
Source0: %{url}/archive/%{commit}/%{prjname}-%{shortcommit}.tar.gz
+Patch0: 0001-v4l2loopback-Fixup-bytesused-field-when-writer-sends.patch
+
BuildRequires: gcc
BuildRequires: elfutils-libelf-devel
BuildRequires: kmodtool
@@ -49,6 +51,10 @@ This package contains the kmod module for %{prjname}.
kmodtool --target %{_target_cpu} --repo rpmfusion --kmodname %{prjname} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null
%setup -q -c
+(cd v4l2loopback-%{commit}
+%patch0 -p1
+)
+
for kernel_version in %{?kernel_versions} ; do
cp -a v4l2loopback-%{commit} _kmod_build_${kernel_version%%___*}
done
@@ -70,6 +76,10 @@ done
%changelog
+* Tue May 09 2023 Kate Hsuan <hpa(a)redhat.com> - 0.12.7-20230503g2c9b670-1
+- Updated to commit 2c9b67072b15d903fecde67c7f269abeafee4c25
+- The patch is used to prevent the value of byteused field becomes too large
+
* Thu Mar 02 2023 Kate Hsuan <hpa(a)redhat.com> - 0.12.7-20230220ga669686-1
- Updated to commit a66968647843f57448b59cf98d0318f1e98e072c
1 year, 6 months
[ipu6-camera-bins/f38] Updated dependency settings
by smallorange
commit 015d80198c910e52790b531214801b132c853473
Author: Kate Hsuan <hpa(a)redhat.com>
Date: Tue May 9 13:35:24 2023 +0800
Updated dependency settings
ipu6-camera-bins.spec | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
---
diff --git a/ipu6-camera-bins.spec b/ipu6-camera-bins.spec
index 07703b3..114462b 100644
--- a/ipu6-camera-bins.spec
+++ b/ipu6-camera-bins.spec
@@ -7,7 +7,7 @@
Name: ipu6-camera-bins
Summary: Binary library for Intel IPU6
Version: 0.0
-Release: 5.%{commitdate}git%{shortcommit}%{?dist}
+Release: 6.%{commitdate}git%{shortcommit}%{?dist}
License: Proprietary
Source0: https://github.com/intel/%{name}/archive/%{commit}/%{name}-%{shortcommit}...
@@ -18,6 +18,12 @@ BuildRequires: patchelf
ExclusiveArch: x86_64
+Requires: ipu6-camera-bins-firmware
+Requires: ivsc-firmware
+Requires: gstreamer1-plugins-icamerasrc
+Requires: v4l2-relayd
+Requires: intel-ipu6-kmod
+
# For kmod package
Provides: intel-ipu6-kmod-common = %{version}
@@ -95,6 +101,9 @@ install -p -D -m 0644 ipu6ep/lib/firmware/intel/ipu6ep_fw.bin %{buildroot}/usr/l
%changelog
+* Tue May 09 2023 Kate Hsuan <hpa(a)redhat.com> - 0.0-6.20221112git4694ba7
+- Updated dependency settings
+
* Tue Dec 13 2022 Kate Hsuan <hpa(a)redhat.com> - 0.0-5.20221112git4694ba7
- Fix indentation.
- Remove unnecessary dir macro.
1 year, 6 months