[{"id":39713,"web_url":"https://patchwork.libcamera.org/comment/39713/","msgid":"<a761f43e-d7b3-4684-8331-c1e421e7a064@ideasonboard.com>","date":"2026-07-15T08:35:38","subject":"Re: [PATCH] include: linux: Update to Linux 7.1","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 07. 09. 15:48 keltezéssel, Kieran Bingham írta:\n> Update the kernel headers to v7.1 using utils/update-kernel-headers.sh.\n> Preserve the libcamera local modifications manually.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> ---\n> \n> v2:\n>   - Update commit message\n>   - Bring in linux/bits.h which is now used by linux/drm_mode.h\n\nWhat about `linux/const.h` that is also included?\n\n\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n>   include/linux/README           |  2 +-\n>   include/linux/bits.h           | 14 ++++++\n>   include/linux/drm_fourcc.h     | 16 +++++++\n>   include/linux/drm_mode.h       | 84 ++++++++++++++++++++++++++++++++++\n>   utils/update-kernel-headers.sh |  1 +\n>   5 files changed, 116 insertions(+), 1 deletion(-)\n>   create mode 100644 include/linux/bits.h\n> \n> diff --git a/include/linux/README b/include/linux/README\n> index b02952bb28ca..9303e0f14ae6 100644\n> --- a/include/linux/README\n> +++ b/include/linux/README\n> @@ -1,4 +1,4 @@\n>   # SPDX-License-Identifier: CC0-1.0\n>   \n> -Files in this directory are imported from v7.0 of the Linux kernel. Do not\n> +Files in this directory are imported from v7.1 of the Linux kernel. Do not\n>   modify them manually.\n> diff --git a/include/linux/bits.h b/include/linux/bits.h\n> new file mode 100644\n> index 000000000000..9243f3897518\n> --- /dev/null\n> +++ b/include/linux/bits.h\n> @@ -0,0 +1,14 @@\n> +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n> +/* bits.h: Macros for dealing with bitmasks.  */\n> +\n> +#ifndef _LINUX_BITS_H\n> +#define _LINUX_BITS_H\n> +\n> +#define __GENMASK(h, l) (((~_UL(0)) << (l)) & (~_UL(0) >> (__BITS_PER_LONG - 1 - (h))))\n> +\n> +#define __GENMASK_ULL(h, l) (((~_ULL(0)) << (l)) & (~_ULL(0) >> (__BITS_PER_LONG_LONG - 1 - (h))))\n> +\n> +#define __GENMASK_U128(h, l) \\\n> +\t((_BIT128((h)) << 1) - (_BIT128(l)))\n> +\n> +#endif /* _LINUX_BITS_H */\n> diff --git a/include/linux/drm_fourcc.h b/include/linux/drm_fourcc.h\n> index e8a3d949032b..8e2a6abae62f 100644\n> --- a/include/linux/drm_fourcc.h\n> +++ b/include/linux/drm_fourcc.h\n> @@ -1480,6 +1480,22 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)\n>   #define DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED \\\n>   \tDRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 1ULL)\n>   \n> +/*\n> + * ARM 64k interleaved modifier\n> + *\n> + * This is used by ARM Mali v10+ GPUs. With this modifier, the plane is divided\n> + * into 64k byte 1:1 or 2:1 -sided tiles. The 64k tiles are laid out linearly.\n> + * Each 64k tile is divided into blocks of 16x16 texel blocks, which are\n> + * themselves laid out linearly within a 64k tile. Then within each 16x16\n> + * block, texel blocks are laid out according to U order, similar to\n> + * 16X16_BLOCK_U_INTERLEAVED.\n> + *\n> + * Note that unlike 16X16_BLOCK_U_INTERLEAVED, the layout does not change\n> + * depending on whether a format is compressed or not.\n> + */\n> +#define DRM_FORMAT_MOD_ARM_INTERLEAVED_64K \\\n> +\tDRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 2ULL)\n> +\n>   /*\n>    * Allwinner tiled modifier\n>    *\n> diff --git a/include/linux/drm_mode.h b/include/linux/drm_mode.h\n> index 8894b7a80732..381a3e857d4e 100644\n> --- a/include/linux/drm_mode.h\n> +++ b/include/linux/drm_mode.h\n> @@ -10,6 +10,9 @@\n>   #ifndef _DRM_MODE_H\n>   #define _DRM_MODE_H\n>   \n> +#include <linux/bits.h>\n> +#include <linux/const.h>\n> +\n>   #include \"drm.h\"\n>   \n>   #if defined(__cplusplus)\n> @@ -149,6 +152,10 @@ extern \"C\" {\n>   #define DRM_MODE_LINK_STATUS_GOOD\t0\n>   #define DRM_MODE_LINK_STATUS_BAD\t1\n>   \n> +/* Panel type property */\n> +#define DRM_MODE_PANEL_TYPE_UNKNOWN\t0\n> +#define DRM_MODE_PANEL_TYPE_OLED\t1\n> +\n>   /*\n>    * DRM_MODE_ROTATE_<degrees>\n>    *\n> @@ -1528,6 +1535,83 @@ struct drm_mode_closefb {\n>   \t__u32 pad;\n>   };\n>   \n> +/*\n> + * Put 16-bit ARGB values into a standard 64-bit representation that can be\n> + * used for ioctl parameters, inter-driver communication, etc.\n> + *\n> + * If the component values being provided contain less than 16 bits of\n> + * precision, use a conversion ratio to get a better color approximation.\n> + * The ratio is computed as (2^16 - 1) / (2^bpc - 1), where bpc and 16 are\n> + * the input and output precision, respectively.\n> + * Also note bpc must be greater than 0.\n> + */\n> +#define __DRM_ARGB64_PREP(c, shift)\t\t\t\t\t\\\n> +\t(((__u64)(c) & __GENMASK(15, 0)) << (shift))\n> +\n> +#define __DRM_ARGB64_PREP_BPC(c, shift, bpc)\t\t\t\t\\\n> +({\t\t\t\t\t\t\t\t\t\\\n> +\t__u16 mask = __GENMASK((bpc) - 1, 0);\t\t\t\t\\\n> +\t__u16 conv = __KERNEL_DIV_ROUND_CLOSEST((mask & (c)) *\t\t\\\n> +\t\t\t\t\t\t__GENMASK(15, 0), mask);\\\n> +\t__DRM_ARGB64_PREP(conv, shift);\t\t\t\t\t\\\n> +})\n> +\n> +#define DRM_ARGB64_PREP(alpha, red, green, blue)\t\t\t\\\n> +(\t\t\t\t\t\t\t\t\t\\\n> +\t__DRM_ARGB64_PREP(alpha, 48) |\t\t\t\t\t\\\n> +\t__DRM_ARGB64_PREP(red,   32) |\t\t\t\t\t\\\n> +\t__DRM_ARGB64_PREP(green, 16) |\t\t\t\t\t\\\n> +\t__DRM_ARGB64_PREP(blue,   0)\t\t\t\t\t\\\n> +)\n> +\n> +#define DRM_ARGB64_PREP_BPC(alpha, red, green, blue, bpc)\t\t\\\n> +({\t\t\t\t\t\t\t\t\t\\\n> +\t__typeof__(bpc) __bpc = bpc;\t\t\t\t\t\\\n> +\t__DRM_ARGB64_PREP_BPC(alpha, 48, __bpc) |\t\t\t\\\n> +\t__DRM_ARGB64_PREP_BPC(red,   32, __bpc) |\t\t\t\\\n> +\t__DRM_ARGB64_PREP_BPC(green, 16, __bpc) |\t\t\t\\\n> +\t__DRM_ARGB64_PREP_BPC(blue,   0, __bpc);\t\t\t\\\n> +})\n> +\n> +/*\n> + * Extract the specified color component from a standard 64-bit ARGB value.\n> + *\n> + * If the requested precision is less than 16 bits, make use of a conversion\n> + * ratio calculated as (2^bpc - 1) / (2^16 - 1), where bpc and 16 are the\n> + * output and input precision, respectively.\n> + *\n> + * If speed is more important than accuracy, use DRM_ARGB64_GET*_BPCS()\n> + * instead of DRM_ARGB64_GET*_BPC() in order to replace the expensive\n> + * division with a simple bit right-shift operation.\n> + */\n> +#define __DRM_ARGB64_GET(c, shift)\t\t\t\t\t\\\n> +\t((__u16)(((__u64)(c) >> (shift)) & __GENMASK(15, 0)))\n> +\n> +#define __DRM_ARGB64_GET_BPC(c, shift, bpc)\t\t\t\t\\\n> +({\t\t\t\t\t\t\t\t\t\\\n> +\t__u16 comp = __DRM_ARGB64_GET(c, shift);\t\t\t\\\n> +\t__KERNEL_DIV_ROUND_CLOSEST(comp * __GENMASK((bpc) - 1, 0),\t\\\n> +\t\t\t\t   __GENMASK(15, 0));\t\t\t\\\n> +})\n> +\n> +#define __DRM_ARGB64_GET_BPCS(c, shift, bpc)\t\t\t\t\\\n> +\t(__DRM_ARGB64_GET(c, shift) >> (16 - (bpc)))\n> +\n> +#define DRM_ARGB64_GETA(c)\t\t__DRM_ARGB64_GET(c, 48)\n> +#define DRM_ARGB64_GETR(c)\t\t__DRM_ARGB64_GET(c, 32)\n> +#define DRM_ARGB64_GETG(c)\t\t__DRM_ARGB64_GET(c, 16)\n> +#define DRM_ARGB64_GETB(c)\t\t__DRM_ARGB64_GET(c, 0)\n> +\n> +#define DRM_ARGB64_GETA_BPC(c, bpc)\t__DRM_ARGB64_GET_BPC(c, 48, bpc)\n> +#define DRM_ARGB64_GETR_BPC(c, bpc)\t__DRM_ARGB64_GET_BPC(c, 32, bpc)\n> +#define DRM_ARGB64_GETG_BPC(c, bpc)\t__DRM_ARGB64_GET_BPC(c, 16, bpc)\n> +#define DRM_ARGB64_GETB_BPC(c, bpc)\t__DRM_ARGB64_GET_BPC(c, 0, bpc)\n> +\n> +#define DRM_ARGB64_GETA_BPCS(c, bpc)\t__DRM_ARGB64_GET_BPCS(c, 48, bpc)\n> +#define DRM_ARGB64_GETR_BPCS(c, bpc)\t__DRM_ARGB64_GET_BPCS(c, 32, bpc)\n> +#define DRM_ARGB64_GETG_BPCS(c, bpc)\t__DRM_ARGB64_GET_BPCS(c, 16, bpc)\n> +#define DRM_ARGB64_GETB_BPCS(c, bpc)\t__DRM_ARGB64_GET_BPCS(c, 0, bpc)\n> +\n>   #if defined(__cplusplus)\n>   }\n>   #endif\n> diff --git a/utils/update-kernel-headers.sh b/utils/update-kernel-headers.sh\n> index d97840ee0181..3fdea5f1eb5d 100755\n> --- a/utils/update-kernel-headers.sh\n> +++ b/utils/update-kernel-headers.sh\n> @@ -49,6 +49,7 @@ headers=\"\n>   \tdrm/drm.h\n>   \tdrm/drm_fourcc.h\n>   \tdrm/drm_mode.h\n> +\tlinux/bits.h\n>   \tlinux/dma-buf.h\n>   \tlinux/dma-heap.h\n>   \tlinux/dw100.h","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 1A200C3301\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 15 Jul 2026 08:35:43 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 41ED466163;\n\tWed, 15 Jul 2026 10:35:42 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4CB3B6614E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Jul 2026 10:35:41 +0200 (CEST)","from [192.168.33.27] (185.221.140.128.nat.pool.zt.hu\n\t[185.221.140.128])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4B1E4161;\n\tWed, 15 Jul 2026 10:34:46 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"ZH4dRVA2\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1784104486;\n\tbh=6fnR9Xtvj7KnH6ZxVcIpgpek0/GpDurfxA97P6vPHSo=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=ZH4dRVA2U5peI2xEk1MjLy8m2jEhI4hnrjtubPXu2xE3+iGlTDzqPITHJHglUw+B0\n\t6ueVbh7pRv9zFeXjnEDNj0DDNhTxYg56MCdXouklVywPDJTLgERffeLW+3IkeKI8wP\n\tNsU3NLN23DWcoUFh9hpRWZ5dE7iD1yVbR90bEkWQ=","Message-ID":"<a761f43e-d7b3-4684-8331-c1e421e7a064@ideasonboard.com>","Date":"Wed, 15 Jul 2026 10:35:38 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] include: linux: Update to Linux 7.1","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","Cc":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","References":"<20260709134832.915809-1-kieran.bingham@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20260709134832.915809-1-kieran.bingham@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":39723,"web_url":"https://patchwork.libcamera.org/comment/39723/","msgid":"<73f2c491-edb9-49ca-88de-b713b1caebde@ideasonboard.com>","date":"2026-07-15T14:16:38","subject":"Re: [PATCH] include: linux: Update to Linux 7.1","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 07. 15. 15:53 keltezéssel, Kieran Bingham írta:\n> Quoting Barnabás Pőcze (2026-07-15 09:35:38)\n>> 2026. 07. 09. 15:48 keltezéssel, Kieran Bingham írta:\n>>> Update the kernel headers to v7.1 using utils/update-kernel-headers.sh.\n>>> Preserve the libcamera local modifications manually.\n>>>\n>>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>>\n>>> ---\n>>>\n>>> v2:\n>>>    - Update commit message\n>>>    - Bring in linux/bits.h which is now used by linux/drm_mode.h\n>>\n>> What about `linux/const.h` that is also included?\n> \n> I only brought in linux/bits.h as it caused a compile error without it.\n> \n> Which makes me wonder why CI could get linux/const.h but not\n> linux/bits.h. Perhaps linux/bits.h is newer than the CI linux headers?\n> \n> I think as long as all the targets on CI compile correctly we should be\n> ok ?\n\nIn my environment it picks up `const.h` from `/usr/include/linux/`.\n\n\n> \n> --\n> Kieran\n> \n>>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>> ---\n>>>    include/linux/README           |  2 +-\n>>>    include/linux/bits.h           | 14 ++++++\n>>>    include/linux/drm_fourcc.h     | 16 +++++++\n>>>    include/linux/drm_mode.h       | 84 ++++++++++++++++++++++++++++++++++\n>>>    utils/update-kernel-headers.sh |  1 +\n>>>    5 files changed, 116 insertions(+), 1 deletion(-)\n>>>    create mode 100644 include/linux/bits.h\n>>>\n>>> diff --git a/include/linux/README b/include/linux/README\n>>> index b02952bb28ca..9303e0f14ae6 100644\n>>> --- a/include/linux/README\n>>> +++ b/include/linux/README\n>>> @@ -1,4 +1,4 @@\n>>>    # SPDX-License-Identifier: CC0-1.0\n>>>\n>>> -Files in this directory are imported from v7.0 of the Linux kernel. Do not\n>>> +Files in this directory are imported from v7.1 of the Linux kernel. Do not\n>>>    modify them manually.\n>>> diff --git a/include/linux/bits.h b/include/linux/bits.h\n>>> new file mode 100644\n>>> index 000000000000..9243f3897518\n>>> --- /dev/null\n>>> +++ b/include/linux/bits.h\n>>> @@ -0,0 +1,14 @@\n>>> +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n>>> +/* bits.h: Macros for dealing with bitmasks.  */\n>>> +\n>>> +#ifndef _LINUX_BITS_H\n>>> +#define _LINUX_BITS_H\n>>> +\n>>> +#define __GENMASK(h, l) (((~_UL(0)) << (l)) & (~_UL(0) >> (__BITS_PER_LONG - 1 - (h))))\n>>> +\n>>> +#define __GENMASK_ULL(h, l) (((~_ULL(0)) << (l)) & (~_ULL(0) >> (__BITS_PER_LONG_LONG - 1 - (h))))\n>>> +\n>>> +#define __GENMASK_U128(h, l) \\\n>>> +     ((_BIT128((h)) << 1) - (_BIT128(l)))\n>>> +\n>>> +#endif /* _LINUX_BITS_H */\n>>> diff --git a/include/linux/drm_fourcc.h b/include/linux/drm_fourcc.h\n>>> index e8a3d949032b..8e2a6abae62f 100644\n>>> --- a/include/linux/drm_fourcc.h\n>>> +++ b/include/linux/drm_fourcc.h\n>>> @@ -1480,6 +1480,22 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)\n>>>    #define DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED \\\n>>>        DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 1ULL)\n>>>\n>>> +/*\n>>> + * ARM 64k interleaved modifier\n>>> + *\n>>> + * This is used by ARM Mali v10+ GPUs. With this modifier, the plane is divided\n>>> + * into 64k byte 1:1 or 2:1 -sided tiles. The 64k tiles are laid out linearly.\n>>> + * Each 64k tile is divided into blocks of 16x16 texel blocks, which are\n>>> + * themselves laid out linearly within a 64k tile. Then within each 16x16\n>>> + * block, texel blocks are laid out according to U order, similar to\n>>> + * 16X16_BLOCK_U_INTERLEAVED.\n>>> + *\n>>> + * Note that unlike 16X16_BLOCK_U_INTERLEAVED, the layout does not change\n>>> + * depending on whether a format is compressed or not.\n>>> + */\n>>> +#define DRM_FORMAT_MOD_ARM_INTERLEAVED_64K \\\n>>> +     DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 2ULL)\n>>> +\n>>>    /*\n>>>     * Allwinner tiled modifier\n>>>     *\n>>> diff --git a/include/linux/drm_mode.h b/include/linux/drm_mode.h\n>>> index 8894b7a80732..381a3e857d4e 100644\n>>> --- a/include/linux/drm_mode.h\n>>> +++ b/include/linux/drm_mode.h\n>>> @@ -10,6 +10,9 @@\n>>>    #ifndef _DRM_MODE_H\n>>>    #define _DRM_MODE_H\n>>>\n>>> +#include <linux/bits.h>\n>>> +#include <linux/const.h>\n>>> +\n>>>    #include \"drm.h\"\n>>>\n>>>    #if defined(__cplusplus)\n>>> @@ -149,6 +152,10 @@ extern \"C\" {\n>>>    #define DRM_MODE_LINK_STATUS_GOOD   0\n>>>    #define DRM_MODE_LINK_STATUS_BAD    1\n>>>\n>>> +/* Panel type property */\n>>> +#define DRM_MODE_PANEL_TYPE_UNKNOWN  0\n>>> +#define DRM_MODE_PANEL_TYPE_OLED     1\n>>> +\n>>>    /*\n>>>     * DRM_MODE_ROTATE_<degrees>\n>>>     *\n>>> @@ -1528,6 +1535,83 @@ struct drm_mode_closefb {\n>>>        __u32 pad;\n>>>    };\n>>>\n>>> +/*\n>>> + * Put 16-bit ARGB values into a standard 64-bit representation that can be\n>>> + * used for ioctl parameters, inter-driver communication, etc.\n>>> + *\n>>> + * If the component values being provided contain less than 16 bits of\n>>> + * precision, use a conversion ratio to get a better color approximation.\n>>> + * The ratio is computed as (2^16 - 1) / (2^bpc - 1), where bpc and 16 are\n>>> + * the input and output precision, respectively.\n>>> + * Also note bpc must be greater than 0.\n>>> + */\n>>> +#define __DRM_ARGB64_PREP(c, shift)                                  \\\n>>> +     (((__u64)(c) & __GENMASK(15, 0)) << (shift))\n>>> +\n>>> +#define __DRM_ARGB64_PREP_BPC(c, shift, bpc)                         \\\n>>> +({                                                                   \\\n>>> +     __u16 mask = __GENMASK((bpc) - 1, 0);                           \\\n>>> +     __u16 conv = __KERNEL_DIV_ROUND_CLOSEST((mask & (c)) *          \\\n>>> +                                             __GENMASK(15, 0), mask);\\\n>>> +     __DRM_ARGB64_PREP(conv, shift);                                 \\\n>>> +})\n>>> +\n>>> +#define DRM_ARGB64_PREP(alpha, red, green, blue)                     \\\n>>> +(                                                                    \\\n>>> +     __DRM_ARGB64_PREP(alpha, 48) |                                  \\\n>>> +     __DRM_ARGB64_PREP(red,   32) |                                  \\\n>>> +     __DRM_ARGB64_PREP(green, 16) |                                  \\\n>>> +     __DRM_ARGB64_PREP(blue,   0)                                    \\\n>>> +)\n>>> +\n>>> +#define DRM_ARGB64_PREP_BPC(alpha, red, green, blue, bpc)            \\\n>>> +({                                                                   \\\n>>> +     __typeof__(bpc) __bpc = bpc;                                    \\\n>>> +     __DRM_ARGB64_PREP_BPC(alpha, 48, __bpc) |                       \\\n>>> +     __DRM_ARGB64_PREP_BPC(red,   32, __bpc) |                       \\\n>>> +     __DRM_ARGB64_PREP_BPC(green, 16, __bpc) |                       \\\n>>> +     __DRM_ARGB64_PREP_BPC(blue,   0, __bpc);                        \\\n>>> +})\n>>> +\n>>> +/*\n>>> + * Extract the specified color component from a standard 64-bit ARGB value.\n>>> + *\n>>> + * If the requested precision is less than 16 bits, make use of a conversion\n>>> + * ratio calculated as (2^bpc - 1) / (2^16 - 1), where bpc and 16 are the\n>>> + * output and input precision, respectively.\n>>> + *\n>>> + * If speed is more important than accuracy, use DRM_ARGB64_GET*_BPCS()\n>>> + * instead of DRM_ARGB64_GET*_BPC() in order to replace the expensive\n>>> + * division with a simple bit right-shift operation.\n>>> + */\n>>> +#define __DRM_ARGB64_GET(c, shift)                                   \\\n>>> +     ((__u16)(((__u64)(c) >> (shift)) & __GENMASK(15, 0)))\n>>> +\n>>> +#define __DRM_ARGB64_GET_BPC(c, shift, bpc)                          \\\n>>> +({                                                                   \\\n>>> +     __u16 comp = __DRM_ARGB64_GET(c, shift);                        \\\n>>> +     __KERNEL_DIV_ROUND_CLOSEST(comp * __GENMASK((bpc) - 1, 0),      \\\n>>> +                                __GENMASK(15, 0));                   \\\n>>> +})\n>>> +\n>>> +#define __DRM_ARGB64_GET_BPCS(c, shift, bpc)                         \\\n>>> +     (__DRM_ARGB64_GET(c, shift) >> (16 - (bpc)))\n>>> +\n>>> +#define DRM_ARGB64_GETA(c)           __DRM_ARGB64_GET(c, 48)\n>>> +#define DRM_ARGB64_GETR(c)           __DRM_ARGB64_GET(c, 32)\n>>> +#define DRM_ARGB64_GETG(c)           __DRM_ARGB64_GET(c, 16)\n>>> +#define DRM_ARGB64_GETB(c)           __DRM_ARGB64_GET(c, 0)\n>>> +\n>>> +#define DRM_ARGB64_GETA_BPC(c, bpc)  __DRM_ARGB64_GET_BPC(c, 48, bpc)\n>>> +#define DRM_ARGB64_GETR_BPC(c, bpc)  __DRM_ARGB64_GET_BPC(c, 32, bpc)\n>>> +#define DRM_ARGB64_GETG_BPC(c, bpc)  __DRM_ARGB64_GET_BPC(c, 16, bpc)\n>>> +#define DRM_ARGB64_GETB_BPC(c, bpc)  __DRM_ARGB64_GET_BPC(c, 0, bpc)\n>>> +\n>>> +#define DRM_ARGB64_GETA_BPCS(c, bpc) __DRM_ARGB64_GET_BPCS(c, 48, bpc)\n>>> +#define DRM_ARGB64_GETR_BPCS(c, bpc) __DRM_ARGB64_GET_BPCS(c, 32, bpc)\n>>> +#define DRM_ARGB64_GETG_BPCS(c, bpc) __DRM_ARGB64_GET_BPCS(c, 16, bpc)\n>>> +#define DRM_ARGB64_GETB_BPCS(c, bpc) __DRM_ARGB64_GET_BPCS(c, 0, bpc)\n>>> +\n>>>    #if defined(__cplusplus)\n>>>    }\n>>>    #endif\n>>> diff --git a/utils/update-kernel-headers.sh b/utils/update-kernel-headers.sh\n>>> index d97840ee0181..3fdea5f1eb5d 100755\n>>> --- a/utils/update-kernel-headers.sh\n>>> +++ b/utils/update-kernel-headers.sh\n>>> @@ -49,6 +49,7 @@ headers=\"\n>>>        drm/drm.h\n>>>        drm/drm_fourcc.h\n>>>        drm/drm_mode.h\n>>> +     linux/bits.h\n>>>        linux/dma-buf.h\n>>>        linux/dma-heap.h\n>>>        linux/dw100.h\n>>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 25D60C3304\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 15 Jul 2026 14:16:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1711967E11;\n\tWed, 15 Jul 2026 16:16:43 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0717F66105\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Jul 2026 16:16:42 +0200 (CEST)","from [192.168.33.27] (185.221.140.128.nat.pool.zt.hu\n\t[185.221.140.128])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B5AAF12D6;\n\tWed, 15 Jul 2026 16:15:46 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"QH4TpDIS\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1784124946;\n\tbh=GtoE3hNWa9lIz9fvyfmpG9DelLgGPVpSRle+nw0VUoo=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=QH4TpDISWkdOqgy6ofOU1mzUEcoBo77T99bOjmmf1FiM2wNtG5NTR1uHGXVNwhhV/\n\tj1sptl2hLVADAGBdw7hQLF2/QpPTLI2z0MVVlcrm52f7ih7lhBqzuKxvtKcWVX+k2Z\n\t96f8MVmlXAUBnvUF+LOqAtJG4s+W9jjsPZKgA17g=","Message-ID":"<73f2c491-edb9-49ca-88de-b713b1caebde@ideasonboard.com>","Date":"Wed, 15 Jul 2026 16:16:38 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] include: linux: Update to Linux 7.1","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","Cc":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","References":"<20260709134832.915809-1-kieran.bingham@ideasonboard.com>\n\t<a761f43e-d7b3-4684-8331-c1e421e7a064@ideasonboard.com>\n\t<RdDWTBL2wh8NDo594Wqyi3irW6WqfRWr5ND0HwS_Opj2KPKvnsYcgcKeE_7odrOo49zC5XFxfN1Ca9FibXHsjA==@protonmail.internalid>\n\t<178412359276.2174993.13920926821189065636@ping.linuxembedded.co.uk>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<178412359276.2174993.13920926821189065636@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":39725,"web_url":"https://patchwork.libcamera.org/comment/39725/","msgid":"<20260715145416.GA1777830@killaraus.ideasonboard.com>","date":"2026-07-15T14:54:16","subject":"Re: [PATCH] include: linux: Update to Linux 7.1","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Wed, Jul 15, 2026 at 04:16:38PM +0200, Barnabás Pőcze wrote:\n> 2026. 07. 15. 15:53 keltezéssel, Kieran Bingham írta:\n> > Quoting Barnabás Pőcze (2026-07-15 09:35:38)\n> >> 2026. 07. 09. 15:48 keltezéssel, Kieran Bingham írta:\n> >>> Update the kernel headers to v7.1 using utils/update-kernel-headers.sh.\n> >>> Preserve the libcamera local modifications manually.\n> >>>\n> >>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> >>> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> >>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> >>>\n> >>> ---\n> >>>\n> >>> v2:\n> >>>    - Update commit message\n> >>>    - Bring in linux/bits.h which is now used by linux/drm_mode.h\n> >>\n> >> What about `linux/const.h` that is also included?\n> > \n> > I only brought in linux/bits.h as it caused a compile error without it.\n> > \n> > Which makes me wonder why CI could get linux/const.h but not\n> > linux/bits.h. Perhaps linux/bits.h is newer than the CI linux headers?\n> > \n> > I think as long as all the targets on CI compile correctly we should be\n> > ok ?\n> \n> In my environment it picks up `const.h` from `/usr/include/linux/`.\n\nBringing in const.h seems like a good idea. The risk of\nincompatibilities with /usr/include/linux/const.h is very low but it\ncould cause annoying to debug issues (or just issues).\n\n> >>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> >>> ---\n> >>>    include/linux/README           |  2 +-\n> >>>    include/linux/bits.h           | 14 ++++++\n> >>>    include/linux/drm_fourcc.h     | 16 +++++++\n> >>>    include/linux/drm_mode.h       | 84 ++++++++++++++++++++++++++++++++++\n> >>>    utils/update-kernel-headers.sh |  1 +\n> >>>    5 files changed, 116 insertions(+), 1 deletion(-)\n> >>>    create mode 100644 include/linux/bits.h\n> >>>\n> >>> diff --git a/include/linux/README b/include/linux/README\n> >>> index b02952bb28ca..9303e0f14ae6 100644\n> >>> --- a/include/linux/README\n> >>> +++ b/include/linux/README\n> >>> @@ -1,4 +1,4 @@\n> >>>    # SPDX-License-Identifier: CC0-1.0\n> >>>\n> >>> -Files in this directory are imported from v7.0 of the Linux kernel. Do not\n> >>> +Files in this directory are imported from v7.1 of the Linux kernel. Do not\n> >>>    modify them manually.\n> >>> diff --git a/include/linux/bits.h b/include/linux/bits.h\n> >>> new file mode 100644\n> >>> index 000000000000..9243f3897518\n> >>> --- /dev/null\n> >>> +++ b/include/linux/bits.h\n> >>> @@ -0,0 +1,14 @@\n> >>> +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n> >>> +/* bits.h: Macros for dealing with bitmasks.  */\n> >>> +\n> >>> +#ifndef _LINUX_BITS_H\n> >>> +#define _LINUX_BITS_H\n> >>> +\n> >>> +#define __GENMASK(h, l) (((~_UL(0)) << (l)) & (~_UL(0) >> (__BITS_PER_LONG - 1 - (h))))\n> >>> +\n> >>> +#define __GENMASK_ULL(h, l) (((~_ULL(0)) << (l)) & (~_ULL(0) >> (__BITS_PER_LONG_LONG - 1 - (h))))\n> >>> +\n> >>> +#define __GENMASK_U128(h, l) \\\n> >>> +     ((_BIT128((h)) << 1) - (_BIT128(l)))\n> >>> +\n> >>> +#endif /* _LINUX_BITS_H */\n> >>> diff --git a/include/linux/drm_fourcc.h b/include/linux/drm_fourcc.h\n> >>> index e8a3d949032b..8e2a6abae62f 100644\n> >>> --- a/include/linux/drm_fourcc.h\n> >>> +++ b/include/linux/drm_fourcc.h\n> >>> @@ -1480,6 +1480,22 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)\n> >>>    #define DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED \\\n> >>>        DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 1ULL)\n> >>>\n> >>> +/*\n> >>> + * ARM 64k interleaved modifier\n> >>> + *\n> >>> + * This is used by ARM Mali v10+ GPUs. With this modifier, the plane is divided\n> >>> + * into 64k byte 1:1 or 2:1 -sided tiles. The 64k tiles are laid out linearly.\n> >>> + * Each 64k tile is divided into blocks of 16x16 texel blocks, which are\n> >>> + * themselves laid out linearly within a 64k tile. Then within each 16x16\n> >>> + * block, texel blocks are laid out according to U order, similar to\n> >>> + * 16X16_BLOCK_U_INTERLEAVED.\n> >>> + *\n> >>> + * Note that unlike 16X16_BLOCK_U_INTERLEAVED, the layout does not change\n> >>> + * depending on whether a format is compressed or not.\n> >>> + */\n> >>> +#define DRM_FORMAT_MOD_ARM_INTERLEAVED_64K \\\n> >>> +     DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 2ULL)\n> >>> +\n> >>>    /*\n> >>>     * Allwinner tiled modifier\n> >>>     *\n> >>> diff --git a/include/linux/drm_mode.h b/include/linux/drm_mode.h\n> >>> index 8894b7a80732..381a3e857d4e 100644\n> >>> --- a/include/linux/drm_mode.h\n> >>> +++ b/include/linux/drm_mode.h\n> >>> @@ -10,6 +10,9 @@\n> >>>    #ifndef _DRM_MODE_H\n> >>>    #define _DRM_MODE_H\n> >>>\n> >>> +#include <linux/bits.h>\n> >>> +#include <linux/const.h>\n> >>> +\n> >>>    #include \"drm.h\"\n> >>>\n> >>>    #if defined(__cplusplus)\n> >>> @@ -149,6 +152,10 @@ extern \"C\" {\n> >>>    #define DRM_MODE_LINK_STATUS_GOOD   0\n> >>>    #define DRM_MODE_LINK_STATUS_BAD    1\n> >>>\n> >>> +/* Panel type property */\n> >>> +#define DRM_MODE_PANEL_TYPE_UNKNOWN  0\n> >>> +#define DRM_MODE_PANEL_TYPE_OLED     1\n> >>> +\n> >>>    /*\n> >>>     * DRM_MODE_ROTATE_<degrees>\n> >>>     *\n> >>> @@ -1528,6 +1535,83 @@ struct drm_mode_closefb {\n> >>>        __u32 pad;\n> >>>    };\n> >>>\n> >>> +/*\n> >>> + * Put 16-bit ARGB values into a standard 64-bit representation that can be\n> >>> + * used for ioctl parameters, inter-driver communication, etc.\n> >>> + *\n> >>> + * If the component values being provided contain less than 16 bits of\n> >>> + * precision, use a conversion ratio to get a better color approximation.\n> >>> + * The ratio is computed as (2^16 - 1) / (2^bpc - 1), where bpc and 16 are\n> >>> + * the input and output precision, respectively.\n> >>> + * Also note bpc must be greater than 0.\n> >>> + */\n> >>> +#define __DRM_ARGB64_PREP(c, shift)                                  \\\n> >>> +     (((__u64)(c) & __GENMASK(15, 0)) << (shift))\n> >>> +\n> >>> +#define __DRM_ARGB64_PREP_BPC(c, shift, bpc)                         \\\n> >>> +({                                                                   \\\n> >>> +     __u16 mask = __GENMASK((bpc) - 1, 0);                           \\\n> >>> +     __u16 conv = __KERNEL_DIV_ROUND_CLOSEST((mask & (c)) *          \\\n> >>> +                                             __GENMASK(15, 0), mask);\\\n> >>> +     __DRM_ARGB64_PREP(conv, shift);                                 \\\n> >>> +})\n> >>> +\n> >>> +#define DRM_ARGB64_PREP(alpha, red, green, blue)                     \\\n> >>> +(                                                                    \\\n> >>> +     __DRM_ARGB64_PREP(alpha, 48) |                                  \\\n> >>> +     __DRM_ARGB64_PREP(red,   32) |                                  \\\n> >>> +     __DRM_ARGB64_PREP(green, 16) |                                  \\\n> >>> +     __DRM_ARGB64_PREP(blue,   0)                                    \\\n> >>> +)\n> >>> +\n> >>> +#define DRM_ARGB64_PREP_BPC(alpha, red, green, blue, bpc)            \\\n> >>> +({                                                                   \\\n> >>> +     __typeof__(bpc) __bpc = bpc;                                    \\\n> >>> +     __DRM_ARGB64_PREP_BPC(alpha, 48, __bpc) |                       \\\n> >>> +     __DRM_ARGB64_PREP_BPC(red,   32, __bpc) |                       \\\n> >>> +     __DRM_ARGB64_PREP_BPC(green, 16, __bpc) |                       \\\n> >>> +     __DRM_ARGB64_PREP_BPC(blue,   0, __bpc);                        \\\n> >>> +})\n> >>> +\n> >>> +/*\n> >>> + * Extract the specified color component from a standard 64-bit ARGB value.\n> >>> + *\n> >>> + * If the requested precision is less than 16 bits, make use of a conversion\n> >>> + * ratio calculated as (2^bpc - 1) / (2^16 - 1), where bpc and 16 are the\n> >>> + * output and input precision, respectively.\n> >>> + *\n> >>> + * If speed is more important than accuracy, use DRM_ARGB64_GET*_BPCS()\n> >>> + * instead of DRM_ARGB64_GET*_BPC() in order to replace the expensive\n> >>> + * division with a simple bit right-shift operation.\n> >>> + */\n> >>> +#define __DRM_ARGB64_GET(c, shift)                                   \\\n> >>> +     ((__u16)(((__u64)(c) >> (shift)) & __GENMASK(15, 0)))\n> >>> +\n> >>> +#define __DRM_ARGB64_GET_BPC(c, shift, bpc)                          \\\n> >>> +({                                                                   \\\n> >>> +     __u16 comp = __DRM_ARGB64_GET(c, shift);                        \\\n> >>> +     __KERNEL_DIV_ROUND_CLOSEST(comp * __GENMASK((bpc) - 1, 0),      \\\n> >>> +                                __GENMASK(15, 0));                   \\\n> >>> +})\n> >>> +\n> >>> +#define __DRM_ARGB64_GET_BPCS(c, shift, bpc)                         \\\n> >>> +     (__DRM_ARGB64_GET(c, shift) >> (16 - (bpc)))\n> >>> +\n> >>> +#define DRM_ARGB64_GETA(c)           __DRM_ARGB64_GET(c, 48)\n> >>> +#define DRM_ARGB64_GETR(c)           __DRM_ARGB64_GET(c, 32)\n> >>> +#define DRM_ARGB64_GETG(c)           __DRM_ARGB64_GET(c, 16)\n> >>> +#define DRM_ARGB64_GETB(c)           __DRM_ARGB64_GET(c, 0)\n> >>> +\n> >>> +#define DRM_ARGB64_GETA_BPC(c, bpc)  __DRM_ARGB64_GET_BPC(c, 48, bpc)\n> >>> +#define DRM_ARGB64_GETR_BPC(c, bpc)  __DRM_ARGB64_GET_BPC(c, 32, bpc)\n> >>> +#define DRM_ARGB64_GETG_BPC(c, bpc)  __DRM_ARGB64_GET_BPC(c, 16, bpc)\n> >>> +#define DRM_ARGB64_GETB_BPC(c, bpc)  __DRM_ARGB64_GET_BPC(c, 0, bpc)\n> >>> +\n> >>> +#define DRM_ARGB64_GETA_BPCS(c, bpc) __DRM_ARGB64_GET_BPCS(c, 48, bpc)\n> >>> +#define DRM_ARGB64_GETR_BPCS(c, bpc) __DRM_ARGB64_GET_BPCS(c, 32, bpc)\n> >>> +#define DRM_ARGB64_GETG_BPCS(c, bpc) __DRM_ARGB64_GET_BPCS(c, 16, bpc)\n> >>> +#define DRM_ARGB64_GETB_BPCS(c, bpc) __DRM_ARGB64_GET_BPCS(c, 0, bpc)\n> >>> +\n> >>>    #if defined(__cplusplus)\n> >>>    }\n> >>>    #endif\n> >>> diff --git a/utils/update-kernel-headers.sh b/utils/update-kernel-headers.sh\n> >>> index d97840ee0181..3fdea5f1eb5d 100755\n> >>> --- a/utils/update-kernel-headers.sh\n> >>> +++ b/utils/update-kernel-headers.sh\n> >>> @@ -49,6 +49,7 @@ headers=\"\n> >>>        drm/drm.h\n> >>>        drm/drm_fourcc.h\n> >>>        drm/drm_mode.h\n> >>> +     linux/bits.h\n> >>>        linux/dma-buf.h\n> >>>        linux/dma-heap.h\n> >>>        linux/dw100.h","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3626AC3304\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 15 Jul 2026 14:54:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2B7BA67E12;\n\tWed, 15 Jul 2026 16:54:20 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 74F2166105\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Jul 2026 16:54:18 +0200 (CEST)","from killaraus.ideasonboard.com\n\t(2001-14ba-70f3-e800--a06.rev.dnainternet.fi\n\t[IPv6:2001:14ba:70f3:e800::a06])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3398B1C5F;\n\tWed, 15 Jul 2026 16:53:23 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"H6i6JWLH\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1784127203;\n\tbh=zHGavick1zo6N4dS4bztHnc8pyy6BuchR9JMwD1w9SI=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=H6i6JWLHyEM1RlTufwyDA308YR7r7Wwo/oOkJekOlO77xZ0zXk/MFb74s95rUX1th\n\tbD5RsQ6SVFk4/oF8q4If2BZTC2xXT2cRGVG/Ur7S74mWwHXskrzMeGt9JFBfdJLoAa\n\t2vJjlMrCRYP+WekrofcGn/M1Rfji4DTO6cHt6y4A=","Date":"Wed, 15 Jul 2026 17:54:16 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","Subject":"Re: [PATCH] include: linux: Update to Linux 7.1","Message-ID":"<20260715145416.GA1777830@killaraus.ideasonboard.com>","References":"<20260709134832.915809-1-kieran.bingham@ideasonboard.com>\n\t<a761f43e-d7b3-4684-8331-c1e421e7a064@ideasonboard.com>\n\t<RdDWTBL2wh8NDo594Wqyi3irW6WqfRWr5ND0HwS_Opj2KPKvnsYcgcKeE_7odrOo49zC5XFxfN1Ca9FibXHsjA==@protonmail.internalid>\n\t<178412359276.2174993.13920926821189065636@ping.linuxembedded.co.uk>\n\t<73f2c491-edb9-49ca-88de-b713b1caebde@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<73f2c491-edb9-49ca-88de-b713b1caebde@ideasonboard.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]