summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorMartin Weinelt <mweinelt@users.noreply.github.com>2023-05-22 11:58:43 +0200
committerGitHub <noreply@github.com>2023-05-22 11:58:43 +0200
commitd5413b971fa00f32ae424e7c075289b039cf352b (patch)
treee9d2203ff88b4da5a8b615a6e741a32ed886d9e9 /pkgs/os-specific
parentd79d7bdbf43df9aa19f3c3234c0729c54cee6105 (diff)
parente7479fca5519560746857c4e495d30d5f9d17f5b (diff)
Merge pull request #233074 from mweinelt/ipu6-foo
linuxPackages.ipu6-drivers: 2023-02-20 -> 2023-05-19; linuxPackages.ivsc-driver: 2023-01-06 -> 2023-03-10
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r--pkgs/os-specific/linux/ipu6-drivers/default.nix18
-rw-r--r--pkgs/os-specific/linux/ipu6-drivers/pr-84-unpatched-upstream-compatiblity.patch365
-rw-r--r--pkgs/os-specific/linux/ivsc-driver/default.nix12
3 files changed, 12 insertions, 383 deletions
diff --git a/pkgs/os-specific/linux/ipu6-drivers/default.nix b/pkgs/os-specific/linux/ipu6-drivers/default.nix
index f8eac493b18d4..04ddb07492793 100644
--- a/pkgs/os-specific/linux/ipu6-drivers/default.nix
+++ b/pkgs/os-specific/linux/ipu6-drivers/default.nix
@@ -5,22 +5,17 @@
 , kernel
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   pname = "ipu6-drivers";
-  version = "unstable-2023-02-20";
+  version = "unstable-2023-05-19";
 
   src = fetchFromGitHub {
     owner = "intel";
-    repo = pname;
-    rev = "dfedab03f3856010d37968cb384696038c73c984";
-    hash = "sha256-TKo04+fqY64SdDuWApuzRXBnaAW2DReubwFRsdfJMWM=";
+    repo = "ipu6-drivers";
+    rev = "8c02a846d1afe0e108964a2d3db4acb175712da9";
+    hash = "sha256-f2EuxVkCvEPyH0XbLCv5t/Mi0jdk7BOh1QluG/TxZr0=";
   };
 
-  patches = [
-    # https://github.com/intel/ipu6-drivers/pull/84
-    ./pr-84-unpatched-upstream-compatiblity.patch
-  ];
-
   postPatch = ''
     cp --no-preserve=mode --recursive --verbose \
       ${ivsc-driver.src}/backport-include \
@@ -53,7 +48,6 @@ stdenv.mkDerivation rec {
     maintainers = with lib.maintainers; [ hexa ];
     platforms = [ "x86_64-linux" ];
     # requires 6.1.7 https://github.com/intel/ipu6-drivers/pull/84
-    # fails to build on 6.3 https://github.com/intel/ipu6-drivers/issues/140
-    broken = kernel.kernelOlder "6.1.7" || kernel.kernelAtLeast "6.3";
+    broken = kernel.kernelOlder "6.1.7";
   };
 }
diff --git a/pkgs/os-specific/linux/ipu6-drivers/pr-84-unpatched-upstream-compatiblity.patch b/pkgs/os-specific/linux/ipu6-drivers/pr-84-unpatched-upstream-compatiblity.patch
deleted file mode 100644
index 0c7179aa82b6b..0000000000000
--- a/pkgs/os-specific/linux/ipu6-drivers/pr-84-unpatched-upstream-compatiblity.patch
+++ /dev/null
@@ -1,365 +0,0 @@
-From 8f4346915bb7e3a3ad3eea2c24b6da09dac257b2 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@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@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@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@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@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@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@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@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/pkgs/os-specific/linux/ivsc-driver/default.nix b/pkgs/os-specific/linux/ivsc-driver/default.nix
index fbcf619553500..0491b1d548b46 100644
--- a/pkgs/os-specific/linux/ivsc-driver/default.nix
+++ b/pkgs/os-specific/linux/ivsc-driver/default.nix
@@ -4,15 +4,15 @@
 , kernel
 }:
 
-stdenv.mkDerivation rec {
-  pname = "ivsc-drivers";
-  version = "unstable-2023-01-06";
+stdenv.mkDerivation {
+  pname = "ivsc-driver";
+  version = "unstable-2023-03-10";
 
   src = fetchFromGitHub {
     owner = "intel";
     repo = "ivsc-driver";
-    rev = "94ecb88b3ac238d9145ac16230d6e0779bb4fd32";
-    hash = "sha256-Q7iyKw4WFSX42E4AtoW/zYRKpknWZSU66V5VPAx6AjA=";
+    rev = "c8db12b907e2e455d4d5586e5812d1ae0eebd571";
+    hash = "sha256-OM9PljvaMKrk72BFeSCqaABFeAws+tOdd3oC2jyNreE=";
   };
 
   nativeBuildInputs = kernel.moduleBuildDependencies;
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = {
-    homepage = "https://github.com/intel/ivsc-drivers";
+    homepage = "https://github.com/intel/ivsc-driver";
     description = "Intel Vision Sensing Controller kernel driver";
     license = lib.licenses.gpl2;
     maintainers = with lib.maintainers; [ hexa ];