* Re: [PATCH v3 0/3] staging: media: atomisp: use kvmalloc_objs() and drop redundant OOM messages
From: Andy Shevchenko @ 2026-06-25 7:14 UTC (permalink / raw)
To: Rodrigo Gobbi
Cc: andy, hansg, mchehab, sakari.ailus, gregkh, feng, ~lkcamp/patches,
linux-kernel-mentees, linux-kernel, linux-media, linux-staging
In-Reply-To: <20260623221028.40238-1-rodrigo.gobbi.7@gmail.com>
On Tue, Jun 23, 2026 at 07:09:25PM -0300, Rodrigo Gobbi wrote:
> Several allocations in the atomisp driver still size their buffers with
> open-coded multiplication, e.g. width * height * sizeof(*p). When the
> dimensions are large the product can silently wrap, causing kvmalloc()
> to allocate an undersized buffer.
>
> Convert the remaining sites to kvmalloc_objs() with array_size(), which
> saturate to SIZE_MAX on overflow so kvmalloc() returns NULL instead of
> allocating too few bytes.
>
> This continues the work started in commit [2], and picks up the stalled
> sites from [1], unifying with [3].
>
> While here, drop the redundant IA_CSS_ERROR("out of memory") messages on
> the touched allocation paths: the memory management core already emits a
> far more detailed warning on allocation failure as raised at [1].
>
> [1] https://lore.kernel.org/all/20260413112904.98864-1-feng@innora.ai/
> [2] https://github.com/torvalds/linux/commit/d178c7ca8fefc28115d35b94c3b1f4d653e34182
FWIW, since it's in tree, you can refer to it in usual way:
d178c7ca8fef ("staging: media: atomisp: use array3_size() for overflow-safe allocation")
> [3] https://lore.kernel.org/all/20260609215110.118860-1-rodrigo.gobbi.7@gmail.com/
Anyways, the whole series is good, thanks!
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* [PATCH] staging: sm750fb: fix const pointer declaration
From: suryasaimadhu @ 2026-06-25 7:13 UTC (permalink / raw)
To: sudipm.mukherjee, teddy.wang
Cc: gregkh, linux-fbdev, linux-staging, linux-kernel, suryasaimadhu
Make g_fbmode a constant pointer array by adding const qualifier
after the asterisk, as recommended by checkpatch.
Signed-off-by: suryasaimadhu <suryasaimadhu369@gmail.com>
---
drivers/staging/sm750fb/sm750.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 89c811e08..8f533f3b1 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -21,7 +21,7 @@
static int g_hwcursor = 1;
static int g_noaccel __ro_after_init;
static int g_nomtrr __ro_after_init;
-static const char *g_fbmode[] = {NULL, NULL};
+static const char * const g_fbmode[] = {NULL, NULL};
static const char *g_def_fbmode = "1024x768-32@60";
static char *g_settings;
static int g_dualview __ro_after_init;
--
2.47.3
^ permalink raw reply related
* Re: [PATCH v3 2/3] staging: media: atomisp: use kvmalloc_objs() for overflow-safe allocation
From: Andy Shevchenko @ 2026-06-25 7:14 UTC (permalink / raw)
To: Rodrigo Gobbi
Cc: andy, hansg, mchehab, sakari.ailus, gregkh, feng, ~lkcamp/patches,
linux-kernel-mentees, linux-kernel, linux-media, linux-staging
In-Reply-To: <20260623221028.40238-3-rodrigo.gobbi.7@gmail.com>
On Tue, Jun 23, 2026 at 07:09:27PM -0300, Rodrigo Gobbi wrote:
> Replace open-coded width * height * sizeof() multiplications with
> kvmalloc_objs() and array_size() to prevent integer overflow in buffer
> allocations.
>
> The atomisp driver computes DVS and statistics buffer sizes using
> unchecked arithmetic. When dimensions are large, the product can
> silently wrap, causing kvmalloc() to allocate an undersized buffer.
>
> kvmalloc_objs() uses size_mul() internally, which saturates to SIZE_MAX
> on overflow, so kvmalloc() returns NULL instead of succeeding with too
> few bytes. array_size() provides the same overflow protection for the
> two-factor dimension products.
>
> Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> Signed-off-by: Feng Ning <feng@innora.ai>
> [rodrigo: rebased; convert only the sites left open-coded after
> commit d178c7ca8fef]
Thanks, you can keep this on a single line
[rodrigo: rebased; convert only the sites left open-coded after commit d178c7ca8fef]
> Signed-off-by: Rodrigo Gobbi <rodrigo.gobbi.7@gmail.com>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* [RFC] staging: greybus: arche still depends on missing USB3613 provider
From: Pengpeng Hou @ 2026-06-25 6:12 UTC (permalink / raw)
To: Vaibhav Hiremath, Johan Hovold, Alex Elder, Greg Kroah-Hartman
Cc: greybus-dev, linux-staging, linux-kernel, Pengpeng Hou
Hi,
while auditing conditional provider/header contracts, I noticed that Greybus
Arche still appears to describe a USB3613 provider world that is absent from
current mainline.
drivers/staging/greybus/Kconfig still has:
depends on USB_HSIC_USB3613 || COMPILE_TEST
and drivers/staging/greybus/arche-platform.c still conditionally includes
the USB3613 header and calls usb3613_hub_mode_ctrl() when
CONFIG_USB_HSIC_USB3613 is enabled. However, the current tree does not appear
to provide include/linux/usb/usb3613.h or a Kconfig provider for
USB_HSIC_USB3613.
I am not sending a patch yet because this is staging/hardware policy sensitive.
The possible directions seem to be:
1. restore or move the USB3613 provider/header if the hardware path is still
intended;
2. remove the stale USB3613 integration path and rely on the local stub;
3. change the Kconfig dependency to describe only current supported worlds; or
4. keep the contract if an out-of-tree provider is intentionally expected.
Could you advise which direction is expected for Arche?
This is static source/Kconfig/header analysis only. I have not tested Arche
hardware.
Thanks,
Pengpeng
^ permalink raw reply
* [PATCH] staging: sm750fb: make g_fbmode array const pointer const
From: Shravya @ 2026-06-24 23:39 UTC (permalink / raw)
To: sudipm.mukherjee, teddy.wang, gregkh
Cc: linux-fbdev, linux-staging, linux-kernel, Shravya
Add the const qualifier to the g_fbmode array pointers to make
the entire structure read-only. This resolves a checkpatch warning
and allows the compiler to put the data into the read-only segment.
Signed-off-by: Shravya <shravy112@gmail.com>
---
drivers/staging/sm750fb/sm750.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 89c811e0806c..8f533f3b1b42 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -21,7 +21,7 @@
static int g_hwcursor = 1;
static int g_noaccel __ro_after_init;
static int g_nomtrr __ro_after_init;
-static const char *g_fbmode[] = {NULL, NULL};
+static const char * const g_fbmode[] = {NULL, NULL};
static const char *g_def_fbmode = "1024x768-32@60";
static char *g_settings;
static int g_dualview __ro_after_init;
--
2.43.0
^ permalink raw reply related
* Re: [PATCH] staging: rtl8723bs: clean up code style in hal_intf.c
From: Andre Moreira @ 2026-06-24 22:08 UTC (permalink / raw)
To: gregkh; +Cc: linux-staging, linux-kernel
In-Reply-To: <20260624215629.32568-1-andrem.33333@gmail.com>
Please ignore this patch. I accidentally missed several changes in this
submission and sent an incomplete version.
Em qua., 24 de jun. de 2026 às 18:58, André Moreira
<andrem.33333@gmail.com> escreveu:
>
> Fix coding style issues regarding unneeded parentheses, Yoda
> conditions, and unnecessary braces for single-statement blocks.
> Also improve variable initialization.
>
> Signed-off-by: André Moreira <andrem.33333@gmail.com>
> ---
> drivers/staging/rtl8723bs/hal/hal_intf.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/staging/rtl8723bs/hal/hal_intf.c b/drivers/staging/rtl8723bs/hal/hal_intf.c
> index 228297cee5d6e..496f18d40c5e3 100644
> --- a/drivers/staging/rtl8723bs/hal/hal_intf.c
> +++ b/drivers/staging/rtl8723bs/hal/hal_intf.c
> @@ -184,8 +184,9 @@ u32 rtw_hal_read_bbreg(struct adapter *padapter, u32 RegAddr, u32 BitMask)
> {
> return PHY_QueryBBReg_8723B(padapter, RegAddr, BitMask);
> }
> -void rtw_hal_write_bbreg(struct adapter *padapter, u32 RegAddr,
> - u32 BitMask, u32 Data)
> +
> +void rtw_hal_write_bbreg(struct adapter *padapter,
> + u32 RegAddr, u32 BitMask, u32 Data)
> {
> PHY_SetBBReg_8723B(padapter, RegAddr, BitMask, Data);
> }
> --
> 2.43.0
>
^ permalink raw reply
* [PATCH] staging: rtl8723bs: clean up code style in hal_intf.c
From: André Moreira @ 2026-06-24 21:56 UTC (permalink / raw)
To: gregkh; +Cc: linux-staging, linux-kernel, André Moreira
Fix coding style issues regarding unneeded parentheses, Yoda
conditions, and unnecessary braces for single-statement blocks.
Also improve variable initialization.
Signed-off-by: André Moreira <andrem.33333@gmail.com>
---
drivers/staging/rtl8723bs/hal/hal_intf.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/rtl8723bs/hal/hal_intf.c b/drivers/staging/rtl8723bs/hal/hal_intf.c
index 228297cee5d6e..496f18d40c5e3 100644
--- a/drivers/staging/rtl8723bs/hal/hal_intf.c
+++ b/drivers/staging/rtl8723bs/hal/hal_intf.c
@@ -184,8 +184,9 @@ u32 rtw_hal_read_bbreg(struct adapter *padapter, u32 RegAddr, u32 BitMask)
{
return PHY_QueryBBReg_8723B(padapter, RegAddr, BitMask);
}
-void rtw_hal_write_bbreg(struct adapter *padapter, u32 RegAddr,
- u32 BitMask, u32 Data)
+
+void rtw_hal_write_bbreg(struct adapter *padapter,
+ u32 RegAddr, u32 BitMask, u32 Data)
{
PHY_SetBBReg_8723B(padapter, RegAddr, BitMask, Data);
}
--
2.43.0
^ permalink raw reply related
* [PATCH] staging: rtl8723bs: remove unnecessary braces in odm_HWConfig.c
From: Alonso Garrigues @ 2026-06-24 19:34 UTC (permalink / raw)
To: gregkh; +Cc: error27, linux-staging, linux-kernel, Alonso Garrigues
Single statement block does not need braces.
Signed-off-by: Alonso Garrigues <agarrigues@riseup.net>
---
drivers/staging/rtl8723bs/hal/odm_HWConfig.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c b/drivers/staging/rtl8723bs/hal/odm_HWConfig.c
index c88d669cb086..1716252641d3 100644
--- a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c
+++ b/drivers/staging/rtl8723bs/hal/odm_HWConfig.c
@@ -236,9 +236,8 @@ static void odm_rx_phy_status_parsing(struct dm_odm_t *dm_odm,
if (is_cck_rate) {
phy_info->signal_strength = (u8)(odm_signal_scale_mapping(dm_odm, pwdb_all));
} else {
- if (rf_rx_num != 0) {
+ if (rf_rx_num != 0)
phy_info->signal_strength = (u8)(odm_signal_scale_mapping(dm_odm, total_rssi /= rf_rx_num));
- }
}
}
--
2.54.0
^ permalink raw reply related
* [PATCH] staging: rtl8723bs: clean up style issues in rtl8723b_cmd.c
From: Alonso Garrigues @ 2026-06-24 19:31 UTC (permalink / raw)
To: gregkh; +Cc: guojy.bj, linux-staging, linux-kernel, Alonso Garrigues
Split long do-while conditions across multiple lines and add spaces
around binary operators. Fix indentation of misaligned comments.
Signed-off-by: Alonso Garrigues <agarrigues@riseup.net>
---
drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c | 39 +++++++++++++-------
1 file changed, 26 insertions(+), 13 deletions(-)
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
index c35c7f1c38ef..d31d8e445dcc 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
@@ -74,7 +74,7 @@ s32 FillH2CCmd8723B(struct adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmd
else {
memcpy((u8 *)(&h2c_cmd)+1, pCmdBuffer, 3);
memcpy((u8 *)(&h2c_cmd_ex), pCmdBuffer+3, CmdLen-3);
-/* *(u8 *)(&h2c_cmd) |= BIT(7); */
+ /* *(u8 *)(&h2c_cmd) |= BIT(7); */
}
*(u8 *)(&h2c_cmd) |= ElementID;
@@ -416,13 +416,14 @@ void rtl8723b_set_FwPwrMode_cmd(struct adapter *padapter, u8 psmode)
}
-/* offload to FW if fw version > v15.10
- pmlmeext->DrvBcnEarly = 0;
- pmlmeext->DrvBcnTimeOut =7;
+ /* offload to FW if fw version > v15.10 */
+ /* pmlmeext->DrvBcnEarly = 0; */
+ /* pmlmeext->DrvBcnTimeOut =7; */
- if ((pmlmeext->DrvBcnEarly!= 0Xff) && (pmlmeext->DrvBcnTimeOut!= 0xff))
- u1H2CPwrModeParm[H2C_PWRMODE_LEN-1] = BIT(0) | ((pmlmeext->DrvBcnEarly<<1)&0x0E) |((pmlmeext->DrvBcnTimeOut<<4)&0xf0) ;
-*/
+ /* if ((pmlmeext->DrvBcnEarly!= 0Xff) && (pmlmeext->DrvBcnTimeOut!= 0xff)) */
+ /* u1H2CPwrModeParm[H2C_PWRMODE_LEN-1] = */
+ /* BIT(0) | ((pmlmeext->DrvBcnEarly<<1)&0x0E) | */
+ /* ((pmlmeext->DrvBcnTimeOut<<4)&0xf0) ; */
}
@@ -657,9 +658,15 @@ void rtl8723b_download_rsvd_page(struct adapter *padapter, u8 mstatus)
/* check rsvd page download OK. */
rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8 *)(&bcn_valid));
poll++;
- } while (!bcn_valid && (poll%10) != 0 && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
+ } while (!bcn_valid &&
+ (poll % 10) != 0 &&
+ !padapter->bSurpriseRemoved &&
+ !padapter->bDriverStopped);
- } while (!bcn_valid && DLBcnCount <= 100 && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
+ } while (!bcn_valid &&
+ DLBcnCount <= 100 &&
+ !padapter->bSurpriseRemoved &&
+ !padapter->bDriverStopped);
if (padapter->bSurpriseRemoved || padapter->bDriverStopped) {
} else {
@@ -919,12 +926,18 @@ void rtl8723b_download_BTCoex_AP_mode_rsvd_page(struct adapter *padapter)
DLBcnCount++;
do {
yield();
-/* mdelay(10); */
- /* check rsvd page download OK. */
+ /* mdelay(10); */
+ /* check rsvd page download OK. */
rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, &bcn_valid);
poll++;
- } while (!bcn_valid && (poll%10) != 0 && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
- } while (!bcn_valid && (DLBcnCount <= 100) && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
+ } while (!bcn_valid &&
+ (poll % 10) != 0 &&
+ !padapter->bSurpriseRemoved &&
+ !padapter->bDriverStopped);
+ } while (!bcn_valid &&
+ (DLBcnCount <= 100) &&
+ !padapter->bSurpriseRemoved &&
+ !padapter->bDriverStopped);
if (bcn_valid) {
struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter);
--
2.54.0
^ permalink raw reply related
* Re: [PATCH v1 13/13] staging: iio: Initialize spi_device_id arrays using member names
From: Jonathan Cameron @ 2026-06-24 17:54 UTC (permalink / raw)
To: Uwe Kleine-König (The Capable Hub)
Cc: Nuno Sá, Michael Hennerich, David Lechner, Andy Shevchenko,
Greg Kroah-Hartman, linux, linux-iio, linux-staging, linux-kernel
In-Reply-To: <cac7a68e6a6adb1b58207640ab045e59eec86f53.1781883685.git.u.kleine-koenig@baylibre.com>
On Fri, 19 Jun 2026 17:54:41 +0200
Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com> wrote:
> While being less compact, using named initializers allows to more easily
> see which members of the structs are assigned which value without having
> to lookup the declaration of the struct. And it's also more robust
> against changes to the struct definition.
>
> The mentioned robustness is relevant for a planned change to struct
> spi_device_id that replaces .driver_data by an anonymous union.
>
> This patch doesn't modify the compiled arrays, only their representation
> in source form benefits. The former was confirmed with x86 and arm64
> builds.
>
> Signed-off-by: Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com>
Applied. So that leaves the pair related to Andy's comment and that ADI IMU for
a v2.
Thanks for your hard work on this. I merged it fairly quick because
I know we are going to have some merge conflicts (mostly other folk
tidying up individual drivers as part of more complex changes)
Jonathan
^ permalink raw reply
* Re: [PATCH] staging: fbtft: use ARRAY_SIZE() in NUMARGS macro
From: kernel test robot @ 2026-06-24 13:02 UTC (permalink / raw)
To: Joyeta Modak, andy, gregkh
Cc: llvm, oe-kbuild-all, dri-devel, linux-fbdev, linux-staging,
linux-kernel, Joyeta Modak
In-Reply-To: <20260624073804.4391-1-joyetamdk@gmail.com>
Hi Joyeta,
kernel test robot noticed the following build errors:
[auto build test ERROR on staging/staging-testing]
url: https://github.com/intel-lab-lkp/linux/commits/Joyeta-Modak/staging-fbtft-use-ARRAY_SIZE-in-NUMARGS-macro/20260624-153912
base: staging/staging-testing
patch link: https://lore.kernel.org/r/20260624073804.4391-1-joyetamdk%40gmail.com
patch subject: [PATCH] staging: fbtft: use ARRAY_SIZE() in NUMARGS macro
config: um-randconfig-002-20260624 (https://download.01.org/0day-ci/archive/20260624/202606242026.MmYHG2FZ-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260624/202606242026.MmYHG2FZ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202606242026.MmYHG2FZ-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/staging/fbtft/fb_ili9486.c:13:
In file included from drivers/staging/fbtft/fbtft.h:8:
In file included from include/linux/fb.h:5:
In file included from include/uapi/linux/fb.h:6:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:27:
In file included from include/linux/kernel_stat.h:8:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/um/include/asm/hardirq.h:24:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:12:
In file included from arch/um/include/asm/io.h:24:
include/asm-generic/io.h:1209:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
1209 | return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
| ~~~~~~~~~~ ^
>> drivers/staging/fbtft/fb_ili9486.c:51:11: error: initializer element is not a compile-time constant
51 | 0x80 | (par->bgr << 3));
| ~~~~~^~~~~~~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fb_ili9486.c:55:11: error: initializer element is not a compile-time constant
55 | 0x20 | (par->bgr << 3));
| ~~~~~^~~~~~~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fb_ili9486.c:59:11: error: initializer element is not a compile-time constant
59 | 0x40 | (par->bgr << 3));
| ~~~~~^~~~~~~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fb_ili9486.c:63:11: error: initializer element is not a compile-time constant
63 | 0xE0 | (par->bgr << 3));
| ~~~~~^~~~~~~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
1 warning and 4 errors generated.
--
In file included from drivers/staging/fbtft/fbtft-core.c:18:
In file included from include/linux/fb.h:5:
In file included from include/uapi/linux/fb.h:6:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:27:
In file included from include/linux/kernel_stat.h:8:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/um/include/asm/hardirq.h:24:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:12:
In file included from arch/um/include/asm/io.h:24:
include/asm-generic/io.h:1209:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
1209 | return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
| ~~~~~~~~~~ ^
>> drivers/staging/fbtft/fbtft-core.c:204:15: error: initializer element is not a compile-time constant
204 | (xs >> 8) & 0xFF, xs & 0xFF, (xe >> 8) & 0xFF, xe & 0xFF);
| ~~~~~~~~~~^~~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fbtft-core.c:207:15: error: initializer element is not a compile-time constant
207 | (ys >> 8) & 0xFF, ys & 0xFF, (ye >> 8) & 0xFF, ye & 0xFF);
| ~~~~~~~~~~^~~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
1 warning and 2 errors generated.
--
In file included from drivers/staging/fbtft/fb_upd161704.c:17:
In file included from drivers/staging/fbtft/fbtft.h:8:
In file included from include/linux/fb.h:5:
In file included from include/uapi/linux/fb.h:6:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:27:
In file included from include/linux/kernel_stat.h:8:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/um/include/asm/hardirq.h:24:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:12:
In file included from arch/um/include/asm/io.h:24:
include/asm-generic/io.h:1209:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
1209 | return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
| ~~~~~~~~~~ ^
>> drivers/staging/fbtft/fb_upd161704.c:119:26: error: initializer element is not a compile-time constant
119 | write_reg(par, 0x0006, xs);
| ^~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fb_upd161704.c:120:26: error: initializer element is not a compile-time constant
120 | write_reg(par, 0x0007, ys);
| ^~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fb_upd161704.c:123:36: error: initializer element is not a compile-time constant
123 | write_reg(par, 0x0006, WIDTH - 1 - xs);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ~~~~~~~~^~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ~~~~~~~~~~~~~~~~^~~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fb_upd161704.c:124:37: error: initializer element is not a compile-time constant
124 | write_reg(par, 0x0007, HEIGHT - 1 - ys);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ~~~~~~~~^~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ~~~~~~~~~~~~~~~~^~~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fb_upd161704.c:127:36: error: initializer element is not a compile-time constant
127 | write_reg(par, 0x0006, WIDTH - 1 - ys);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ~~~~~~~~^~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ~~~~~~~~~~~~~~~~^~~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
--
In file included from drivers/staging/fbtft/fb_pcd8544.c:15:
In file included from include/linux/spi/spi.h:17:
In file included from include/linux/scatterlist.h:9:
In file included from arch/um/include/asm/io.h:24:
include/asm-generic/io.h:1209:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
1209 | return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
| ~~~~~~~~~~ ^
>> drivers/staging/fbtft/fb_pcd8544.c:53:17: error: initializer element is not a compile-time constant
53 | write_reg(par, 0x04 | (tc & 0x3));
| ^~~~~~~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fb_pcd8544.c:63:17: error: initializer element is not a compile-time constant
63 | write_reg(par, 0x10 | (bs & 0x7));
| ^~~~~~~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
drivers/staging/fbtft/fb_pcd8544.c:137:17: error: initializer element is not a compile-time constant
137 | write_reg(par, 0x80 | curves[0]);
| ^~~~~~~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:240:47: note: expanded from macro 'write_reg'
240 | ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:237:43: note: expanded from macro 'NUMARGS'
237 | #define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
| ^~~~~~~~~~~
include/linux/array_size.h:11:75: note: expanded from macro 'ARRAY_SIZE'
11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
| ^~~
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler.h:204:39: note: expanded from macro '__is_array'
204 | #define __is_array(a) (!__same_type((a), &(a)[0]))
| ^
include/linux/compiler_types.h:610:63: note: expanded from macro '__same_type'
610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/compiler.h:200:84: note: expanded from macro '__BUILD_BUG_ON_ZERO_MSG'
200 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
| ^
1 warning and 3 errors generated.
..
vim +51 drivers/staging/fbtft/fb_ili9486.c
8d64b032aa71963 Thomas Petazzoni 2014-12-31 45
8d64b032aa71963 Thomas Petazzoni 2014-12-31 46 static int set_var(struct fbtft_par *par)
8d64b032aa71963 Thomas Petazzoni 2014-12-31 47 {
8d64b032aa71963 Thomas Petazzoni 2014-12-31 48 switch (par->info->var.rotate) {
8d64b032aa71963 Thomas Petazzoni 2014-12-31 49 case 0:
49475ed0cbb5623 Priit Laes 2015-12-20 50 write_reg(par, MIPI_DCS_SET_ADDRESS_MODE,
49475ed0cbb5623 Priit Laes 2015-12-20 @51 0x80 | (par->bgr << 3));
8d64b032aa71963 Thomas Petazzoni 2014-12-31 52 break;
8d64b032aa71963 Thomas Petazzoni 2014-12-31 53 case 90:
49475ed0cbb5623 Priit Laes 2015-12-20 54 write_reg(par, MIPI_DCS_SET_ADDRESS_MODE,
49475ed0cbb5623 Priit Laes 2015-12-20 55 0x20 | (par->bgr << 3));
8d64b032aa71963 Thomas Petazzoni 2014-12-31 56 break;
8d64b032aa71963 Thomas Petazzoni 2014-12-31 57 case 180:
49475ed0cbb5623 Priit Laes 2015-12-20 58 write_reg(par, MIPI_DCS_SET_ADDRESS_MODE,
49475ed0cbb5623 Priit Laes 2015-12-20 59 0x40 | (par->bgr << 3));
8d64b032aa71963 Thomas Petazzoni 2014-12-31 60 break;
8d64b032aa71963 Thomas Petazzoni 2014-12-31 61 case 270:
49475ed0cbb5623 Priit Laes 2015-12-20 62 write_reg(par, MIPI_DCS_SET_ADDRESS_MODE,
49475ed0cbb5623 Priit Laes 2015-12-20 63 0xE0 | (par->bgr << 3));
8d64b032aa71963 Thomas Petazzoni 2014-12-31 64 break;
8d64b032aa71963 Thomas Petazzoni 2014-12-31 65 default:
8d64b032aa71963 Thomas Petazzoni 2014-12-31 66 break;
8d64b032aa71963 Thomas Petazzoni 2014-12-31 67 }
8d64b032aa71963 Thomas Petazzoni 2014-12-31 68
8d64b032aa71963 Thomas Petazzoni 2014-12-31 69 return 0;
8d64b032aa71963 Thomas Petazzoni 2014-12-31 70 }
8d64b032aa71963 Thomas Petazzoni 2014-12-31 71
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* Re: [PATCH v2 0/3] staging: media: atomisp: remove dead platform_support.h header
From: Andy Shevchenko @ 2026-06-24 12:06 UTC (permalink / raw)
To: Igor Putko
Cc: Hans de Goede, Mauro Carvalho Chehab, Sakari Ailus,
Greg Kroah-Hartman, linux-media, linux-staging, linux-kernel
In-Reply-To: <20260618151246.6678-1-igorpetindev@gmail.com>
On Thu, Jun 18, 2026 at 06:12:43PM +0300, Igor Putko wrote:
>
> Following your feedback, this series replaces the custom CSS_ALIGN() macro
> with the standard __aligned attribute and completely removes the dead
> platform_support.h header file from the driver.
Thank you much for doing this! I have given a few comments, I think the v3 will
be final if you address them. Expecting a v3 with 4 patches.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* Re: [PATCH v2 3/3] staging: media: atomisp: remove dead platform_support.h header file
From: Andy Shevchenko @ 2026-06-24 12:05 UTC (permalink / raw)
To: Igor Putko
Cc: Hans de Goede, Mauro Carvalho Chehab, Sakari Ailus,
Greg Kroah-Hartman, linux-media, linux-staging, linux-kernel
In-Reply-To: <20260618151246.6678-4-igorpetindev@gmail.com>
On Thu, Jun 18, 2026 at 06:12:46PM +0300, Igor Putko wrote:
> Remove the platform_support.h header file completely as it is no longer
> used anywhere in the driver and its contents are obsolete.
Right.
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
...
> -#define CSS_ALIGN(d, a) d __attribute__((aligned(a)))
...assuming this macro will be still alive in the only one header.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* Re: [PATCH v2 2/3] staging: media: atomisp: drop unused platform_support.h inclusions
From: Andy Shevchenko @ 2026-06-24 12:03 UTC (permalink / raw)
To: Igor Putko
Cc: Hans de Goede, Mauro Carvalho Chehab, Sakari Ailus,
Greg Kroah-Hartman, linux-media, linux-staging, linux-kernel
In-Reply-To: <20260618151246.6678-3-igorpetindev@gmail.com>
On Thu, Jun 18, 2026 at 06:12:45PM +0300, Igor Putko wrote:
> Drop the unused inclusions of the platform_support.h header file across
> the driver. The header has become obsolete after replacing the custom
> CSS_ALIGN() macro with standard kernel attributes.
But in the above list there are no users even with the platform_support.h in
place, right? I mean that this patch can be, for example, applied first
without any regression. Correct? If so, make it the first in the series, it
helps a lot to understand the changes in the (currently) first patch.
> Suggested-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> Signed-off-by: Igor Putko <igorpetindev@gmail.com>
> ---
Code wise looks very good to me, thanks!
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* Re: [PATCH v2 1/3] staging: media: atomisp: replace CSS_ALIGN() with standard __aligned
From: Andy Shevchenko @ 2026-06-24 12:00 UTC (permalink / raw)
To: Igor Putko
Cc: Hans de Goede, Mauro Carvalho Chehab, Sakari Ailus,
Greg Kroah-Hartman, linux-media, linux-staging, linux-kernel
In-Reply-To: <20260618151246.6678-2-igorpetindev@gmail.com>
On Thu, Jun 18, 2026 at 06:12:44PM +0300, Igor Putko wrote:
> Replace the custom drivers/staging/media/atomisp-specific CSS_ALIGN()
> macro with the standard kernel __aligned() attribute. This aligns the
> driver with the kernel coding style and is a preparation for removing the
> entire custom platform_support.h header.
...
> +++ b/drivers/staging/media/atomisp/pci/ia_css_acc_types.h
> #include <system_local.h> /* HAS_IRQ_MAP_VERSION_# */
> #include <type_support.h>
> -#include <platform_support.h>
> #include <debug_global.h>
> #include <linux/bits.h>
> +#include <linux/compiler.h>
While at it move the linux/*.h to be on top of the local ones. And group them.
<linux/*.h>
...blank line...
<local ones *.h>
Since there are a lot of uXX, just include types.h instead of compiler.h.
...
> struct ia_css_blob_info {
> u32 bss_target; /** Start position of bss in SP dmem */
> u32 bss_size; /** Size of bss section */
> /** Dynamic data filled by loader */
> - CSS_ALIGN(const void *code,
> - 8); /** Code section absolute pointer within fw, code = icache + text */
> - CSS_ALIGN(const void *data,
> - 8); /** Data section absolute pointer within fw, data = data + bss */
> + /* Code section absolute pointer within fw, code = icache + text */
> + const void *code __aligned(8);
> + /** Data section absolute pointer within fw, data = data + bss */
> + const void *data __aligned(8);
> };
...
> struct ia_css_binary_info {
> - CSS_ALIGN(u32 id, 8); /* IA_CSS_BINARY_ID_* */
> + u32 id __aligned(8); /* IA_CSS_BINARY_ID_* */
...
> struct ia_css_binary_xinfo {
> /* Rest of the binary info, only interesting to the host. */
> enum ia_css_acc_type type;
>
> - CSS_ALIGN(s32 num_output_formats, 8);
> + s32 num_output_formats __aligned(8);
> enum ia_css_frame_format output_formats[IA_CSS_FRAME_FORMAT_NUM];
>
> - CSS_ALIGN(s32 num_vf_formats, 8); /** number of supported vf formats */
> + s32 num_vf_formats __aligned(8); /** number of supported vf formats */
> enum ia_css_frame_format
> vf_formats[IA_CSS_FRAME_FORMAT_NUM]; /** types of supported vf formats */
> u8 num_output_pins;
> ia_css_ptr xmem_addr;
>
> - CSS_ALIGN(const struct ia_css_blob_descr *blob, 8);
> - CSS_ALIGN(u32 blob_index, 8);
> - CSS_ALIGN(union ia_css_all_memory_offsets mem_offsets, 8);
> - CSS_ALIGN(struct ia_css_binary_xinfo *next, 8);
> + const struct ia_css_blob_descr *blob __aligned(8);
> + u32 blob_index __aligned(8);
> + union ia_css_all_memory_offsets mem_offsets __aligned(8);
> + struct ia_css_binary_xinfo *next __aligned(8);
> };
...
> struct ia_css_fw_info {
> size_t header_size; /** size of fw header */
>
> - CSS_ALIGN(u32 type, 8);
> + u32 type __aligned(8);
> union ia_css_fw_union info; /** Binary info */
> struct ia_css_blob_info blob; /** Blob info */
> /* Dynamic part */
> struct ia_css_fw_info *next;
>
> - CSS_ALIGN(u32 loaded, 8); /** Firmware has been loaded */
> - CSS_ALIGN(const u8 *isp_code, 8); /** ISP pointer to code */
> + u32 loaded __aligned(8); /** Firmware has been loaded */
> + const u8 *isp_code __aligned(8); /** ISP pointer to code */
> /** Firmware handle between user space and kernel */
> - CSS_ALIGN(u32 handle, 8);
> + u32 handle __aligned(8);
> /** Sections to copy from/to ISP */
> struct ia_css_isp_param_css_segments mem_initializers;
...
Looking at the above, I think the best is to move the definition from
platform_support.h to ia_css_acc_types.h. The rest what you changed
seems fine with the explicit __aligned() attributes.
So, we can do it in two steps:
- replace in the other files first (as this patch does)
- move the definition to the ia_css_acc_types.h
- ...the rest of the series as is (I haven't reviewed those yet, though)...
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* Re: [PATCH] media: cedrus: fix memory leak in cedrus_init_ctrls()
From: Dan Carpenter @ 2026-06-24 11:50 UTC (permalink / raw)
To: Dawei Feng
Cc: mripard, paulk, mchehab, gregkh, wens, jernej.skrabec, samuel,
hverkuil, linux-media, linux-staging, linux-arm-kernel,
linux-sunxi, linux-kernel, jianhao.xu, zilin, stable
In-Reply-To: <20260624085920.578446-1-dawei.feng@seu.edu.cn>
On Wed, Jun 24, 2026 at 04:59:20PM +0800, Dawei Feng wrote:
> In cedrus_init_ctrls(), the V4L2 control handler is initialized before
> allocating memory for ctx->ctrls. If this allocation fails, the function
> returns -ENOMEM without freeing the previously allocated handler
> resources, leading to a memory leak.
>
> Fix this by calling v4l2_ctrl_handler_free() on the ctx->ctrls allocation
> failure path.
>
> The bug was first flagged by an experimental analysis tool we are
> developing for kernel memory-management bugs while analyzing
> v6.13-rc1. The tool is still under development and is not yet publicly
> available. Manual inspection confirms that the bug is still
> present in v7.1.1.
>
> An x86_64 allyesconfig build showed no new warnings. As we do not have an
> Allwinner SoC or board with a Cedrus VPU available to test with, no
> runtime testing was able to be performed.
>
> Fixes: 50e761516f2b ("media: platform: Add Cedrus VPU decoder driver")
> Cc: stable@vger.kernel.org
> Signed-off-by: Dawei Feng <dawei.feng@seu.edu.cn>
> ---
Looks good.
Reviewed-by: Dan Carpenter <error27@gmail.com>
regards,
dan carpenter
^ permalink raw reply
* Re: [PATCH] staging: fbtft: use ARRAY_SIZE() in NUMARGS macro
From: Andy Shevchenko @ 2026-06-24 11:31 UTC (permalink / raw)
To: Joyeta Modak
Cc: andy, gregkh, dri-devel, linux-fbdev, linux-staging, linux-kernel
In-Reply-To: <20260624073804.4391-1-joyetamdk@gmail.com>
On Wed, Jun 24, 2026 at 01:08:04PM +0530, Joyeta Modak wrote:
> NUMARGS() computes the number of arguments by dividing the size of a
> temporary int array by sizeof(int). Using the standard ARRAY_SIZE()
> macro is the correct way to count array elements in the kernel, and
> ARRAY_SIZE() also provides a __must_be_array() compile time check. There
> are no functional changes.
...
> -#define NUMARGS(...) (sizeof((int[]){__VA_ARGS__}) / sizeof(int))
> +#define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
>
> #define write_reg(par, ...) \
> ((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
What is the maximum parameters .write_register() takes in practice in the
fbtft drivers? If it's less than or equal to 15, we may use args.h instead.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* [PATCH] media: cedrus: fix memory leak in cedrus_init_ctrls()
From: Dawei Feng @ 2026-06-24 8:59 UTC (permalink / raw)
To: mripard
Cc: paulk, mchehab, gregkh, wens, jernej.skrabec, samuel, hverkuil,
linux-media, linux-staging, linux-arm-kernel, linux-sunxi,
linux-kernel, jianhao.xu, zilin, Dawei Feng, stable
In cedrus_init_ctrls(), the V4L2 control handler is initialized before
allocating memory for ctx->ctrls. If this allocation fails, the function
returns -ENOMEM without freeing the previously allocated handler
resources, leading to a memory leak.
Fix this by calling v4l2_ctrl_handler_free() on the ctx->ctrls allocation
failure path.
The bug was first flagged by an experimental analysis tool we are
developing for kernel memory-management bugs while analyzing
v6.13-rc1. The tool is still under development and is not yet publicly
available. Manual inspection confirms that the bug is still
present in v7.1.1.
An x86_64 allyesconfig build showed no new warnings. As we do not have an
Allwinner SoC or board with a Cedrus VPU available to test with, no
runtime testing was able to be performed.
Fixes: 50e761516f2b ("media: platform: Add Cedrus VPU decoder driver")
Cc: stable@vger.kernel.org
Signed-off-by: Dawei Feng <dawei.feng@seu.edu.cn>
---
drivers/staging/media/sunxi/cedrus/cedrus.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media/sunxi/cedrus/cedrus.c
index bbd186b8035b..96acd52e380c 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus.c
@@ -285,8 +285,10 @@ static int cedrus_init_ctrls(struct cedrus_dev *dev, struct cedrus_ctx *ctx)
ctrl_size = sizeof(ctrl) * CEDRUS_CONTROLS_COUNT + 1;
ctx->ctrls = kzalloc(ctrl_size, GFP_KERNEL);
- if (!ctx->ctrls)
+ if (!ctx->ctrls) {
+ v4l2_ctrl_handler_free(hdl);
return -ENOMEM;
+ }
j = 0;
for (i = 0; i < CEDRUS_CONTROLS_COUNT; i++) {
--
2.34.1
^ permalink raw reply related
* Re: [PATCH v2] media: meson: vdec: fix use-after-free of decode work in stop/close path
From: Doruk Tan Ozturk @ 2026-06-24 7:48 UTC (permalink / raw)
To: linux.amoon, neil.armstrong
Cc: mchehab, gregkh, hverkuil, jbrunet, martin.blumenstingl,
linux-media, linux-amlogic, linux-staging, linux-arm-kernel,
linux-kernel
Hi Anand,
Sounds great -- please carry it in your series. Glad it helps, and happy
to review when you post it.
Cheers,
Doruk
^ permalink raw reply
* [PATCH] staging: fbtft: use ARRAY_SIZE() in NUMARGS macro
From: Joyeta Modak @ 2026-06-24 7:38 UTC (permalink / raw)
To: andy, gregkh
Cc: dri-devel, linux-fbdev, linux-staging, linux-kernel, Joyeta Modak
NUMARGS() computes the number of arguments by dividing the size of a
temporary int array by sizeof(int). Using the standard ARRAY_SIZE()
macro is the correct way to count array elements in the kernel, and
ARRAY_SIZE() also provides a __must_be_array() compile time check. There
are no functional changes.
Found using make coccicheck (scripts/coccinelle/misc/array_size.cocci).
Signed-off-by: Joyeta Modak <joyetamdk@gmail.com>
---
drivers/staging/fbtft/fbtft.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
index c7afb0fd3..48da1503f 100644
--- a/drivers/staging/fbtft/fbtft.h
+++ b/drivers/staging/fbtft/fbtft.h
@@ -4,6 +4,7 @@
#ifndef __LINUX_FBTFT_H
#define __LINUX_FBTFT_H
+#include <linux/array_size.h>
#include <linux/fb.h>
#include <linux/spinlock.h>
#include <linux/spi/spi.h>
@@ -233,7 +234,7 @@ struct fbtft_par {
bool polarity;
};
-#define NUMARGS(...) (sizeof((int[]){__VA_ARGS__}) / sizeof(int))
+#define NUMARGS(...) ARRAY_SIZE(((int[]){__VA_ARGS__}))
#define write_reg(par, ...) \
((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
--
2.53.0
^ permalink raw reply related
* [PATCH] media: meson: vdec: fix NULL pointer deref in vdec_try_fmt_common
From: Christian Hewitt @ 2026-06-24 6:58 UTC (permalink / raw)
To: Neil Armstrong, Greg Kroah-Hartman, Kevin Hilman, Jerome Brunet,
Martin Blumenstingl, linux-media, linux-amlogic, linux-staging,
linux-arm-kernel, linux-kernel
When VIDIOC_TRY_FMT is called with an unsupported pixel format on the
OUTPUT queue, vdec_try_fmt_common() falls back to V4L2_PIX_FMT_MPEG2.
However, if a distro has locally patched MPEG2 support out (as it has
been broken for some time) the platform format table does not contain
MPEG2 so find_format() returns NULL and the subsequent dereference of
fmt_out->max_width triggers a NULL pointer dereference.
Fix this by falling back to the first format in the platform's format
array instead of hardcoding V4L2_PIX_FMT_MPEG2. This is always valid
since every platform defines at least one format.
Fixes: 3e7f51bd9607 ("media: meson: add v4l2 m2m video decoder driver")
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
This fixes use of v4l2-ctl and v4l2-compliance tools when MPEG2 support
has been disabled via vdec_platform.c - NB: although this is a fix it's
also a rather niche scenario so there's no need to backport it to older
stable kernels.
drivers/staging/media/meson/vdec/vdec.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/media/meson/vdec/vdec.c b/drivers/staging/media/meson/vdec/vdec.c
index 4b77ec1af5a7..f3e7072f221a 100644
--- a/drivers/staging/media/meson/vdec/vdec.c
+++ b/drivers/staging/media/meson/vdec/vdec.c
@@ -504,8 +504,8 @@ vdec_try_fmt_common(struct amvdec_session *sess, u32 size,
case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
fmt_out = find_format(fmts, size, pixmp->pixelformat);
if (!fmt_out) {
- pixmp->pixelformat = V4L2_PIX_FMT_MPEG2;
- fmt_out = find_format(fmts, size, pixmp->pixelformat);
+ pixmp->pixelformat = fmts[0].pixfmt;
+ fmt_out = &fmts[0];
}
break;
case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
--
2.43.0
^ permalink raw reply related
* Re: [PATCH v2] staging: most: dim2: use dev_err_probe() for clock errors in rcar enable functions
From: Dan Carpenter @ 2026-06-24 6:27 UTC (permalink / raw)
To: Batu Ada Tutkun
Cc: parthiban.veerasooran, christian.gromm, gregkh, linux-staging,
linux-kernel
In-Reply-To: <6a3ae2f8.cf2df9a4.132dbf.1a50@mx.google.com>
On Tue, Jun 23, 2026 at 10:46:07PM +0300, Batu Ada Tutkun wrote:
> rcar_gen2_enable() and rcar_gen3_enable() use the old pattern of
> dev_err() followed by return PTR_ERR() when devm_clk_get() fails.
> fsl_mx6_enable() in the same file was already converted to use
> dev_err_probe() by a previous cleanup series.
>
> Convert the remaining two functions for consistency. devm_clk_get()
> calls clk_get() which can return -EPROBE_DEFER if the clock provider
> has not yet registered. Using dev_err_probe() suppresses the log at
> error level in that case, avoiding misleading "cannot get clock" output
> during a normal deferred probe.
>
> clk_prepare_enable() cannot return -EPROBE_DEFER since the clock handle
> is already acquired at that point, so those error paths are left as
> dev_err().
>
> Signed-off-by: Batu Ada Tutkun <batuadatutkun@gmail.com>
> ---
> Compile tested only. No R-Car hardware available. This is a correctness
> fix for the deferred probe path, not a response to a reported
> user visible issue.
>
> Changes in v2:
> - Mention clk_get() explicitly in commit message
> - Add testing note under --- cut off line
>
Wrong patch for the commit message.
> drivers/staging/most/video/video.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/staging/most/video/video.c b/drivers/staging/most/video/video.c
> index 04351f8cc..1e1ff3c52 100644
> --- a/drivers/staging/most/video/video.c
> +++ b/drivers/staging/most/video/video.c
> @@ -33,14 +33,14 @@ struct most_video_dev {
> bool mute;
>
> struct list_head pending_mbos;
> - spinlock_t list_lock;
> + spinlock_t list_lock; /* protects pending_mbos and mute */
It doesn't protect mute, really. Only half heartedly. And
protecting mute is unnecessary.
>
> struct v4l2_device v4l2_dev;
> atomic_t access_ref;
> struct video_device *vdev;
> unsigned int ctrl_input;
>
> - struct mutex lock;
> + struct mutex lock; /* serializes V4L2 ioctls */
I kind of hate this checkpatch warning... It's really hard to judge
if this comment is accurate or useful.
regards,
dan carpenter
>
> wait_queue_head_t wait_data;
> };
> --
> 2.53.0
^ permalink raw reply
* Re: [PATCH v2 3/4] drm/ssd130x: Add SSD135X_FAMILY and SSD1351 support
From: Markus Elfring @ 2026-06-24 6:27 UTC (permalink / raw)
To: Amit Barzilai, dri-devel, devicetree, linux-fbdev, linux-staging
Cc: LKML, Adam Azuddin, Andy Shevchenko, Chintan Patel, Conor Dooley,
David Airlie, Greg Kroah-Hartman, Helge Deller,
Javier Martinez Canillas, Krzysztof Kozlowski, Maarten Lankhorst,
Maxime Ripard, Rob Herring, Simona Vetter, Thomas Zimmermann
In-Reply-To: <20260623213447.30196-1-amit.barzilai22@gmail.com>
>>> +++ b/drivers/gpu/drm/solomon/ssd130x.c
>>> @@ -146,6 +146,33 @@
>>> #define SSD133X_COLOR_DEPTH_256 0x0
>>> #define SSD133X_COLOR_DEPTH_65K 0x1
>>>
>>> +/* ssd135x commands */
>>> +#define SSD135X_SET_COL_RANGE 0x15
>>> +#define SSD135X_WRITE_RAM 0x5c
>>> +#define SSD135X_SET_ROW_RANGE 0x75
>> [...]
>>
>> How do you think about to use an enumeration for such data?
>> https://en.wikipedia.org/wiki/Enumerated_type#C_and_syntactically_similar_languages
>
> Thank you for the suggestion.
>
> I used #define to stay consistent with the rest of ssd130x.c, where the
> command constants for the other families are all defined the same way.
Will any further adjustments become more interesting?
> In my opinion an enum could be a readable solution for these values,
This is nice.
> but I don't think the switch should be included in this series.
What does hinder you to take another design option better into account?
Regards,
Markus
^ permalink raw reply
* Re: [PATCH v2] staging: most: dim2: use dev_err_probe() for clock errors in rcar enable functions
From: Dan Carpenter @ 2026-06-24 6:22 UTC (permalink / raw)
To: Batu Ada Tutkun
Cc: parthiban.veerasooran, christian.gromm, gregkh, linux-staging,
linux-kernel
In-Reply-To: <6a3ae40a.3dabba3e.2527ef.7783@mx.google.com>
On Tue, Jun 23, 2026 at 03:35:08PM +0300, Batu Ada Tutkun wrote:
> rcar_gen2_enable() and rcar_gen3_enable() use the old pattern of
> dev_err() followed by return PTR_ERR() when devm_clk_get() fails.
> fsl_mx6_enable() in the same file was already converted to use
> dev_err_probe() by a previous cleanup series.
>
> Convert the remaining two functions for consistency. devm_clk_get()
> calls clk_get() which can return -EPROBE_DEFER if the clock provider
> has not yet registered. Using dev_err_probe() suppresses the log at
> error level in that case, avoiding misleading "cannot get clock" output
> during a normal deferred probe.
>
> clk_prepare_enable() cannot return -EPROBE_DEFER since the clock handle
> is already acquired at that point, so those error paths are left as
> dev_err().
>
> Signed-off-by: Batu Ada Tutkun <batuadatutkun@gmail.com>
>
> ---
> Compile tested only. No R-Car hardware available. This is a correctness
> fix for the deferred probe path, not a response to a reported
> user visible issue.
>
> Changes in v2:
> - Mention clk_get() explicitly in commit message
> - Add testing note under --- cut off line
>
Perfect. Thanks.
Reviewed-by: Dan Carpenter <error27@gmail.com>
regards,
dan carpenter
^ permalink raw reply
* [PATCH v2] staging: sm750fb: rename CamelCase pvMem and pvReg
From: Arnav Kapoor @ 2026-06-24 4:46 UTC (permalink / raw)
To: Sudip Mukherjee, Teddy Wang, Greg Kroah-Hartman
Cc: linux-fbdev, linux-staging, linux-kernel, Arnav Kapoor,
kernel test robot
In-Reply-To: <20260621045050.63460-1-kapoorarnav43@gmail.com>
Rename the remaining CamelCase structure members
to follow kernel coding style.
Rename:
* pvMem -> vram
* pvReg -> reg
Fix build errors by renaming the corresponding
structure members in sm750.h as well.
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202606240823.hWXfYyPf-lkp@intel.com/
Signed-off-by: Arnav Kapoor <kapoorarnav43@gmail.com>
---
drivers/staging/sm750fb/sm750.c | 22 +++++++++++-----------
drivers/staging/sm750fb/sm750.h | 4 ++--
drivers/staging/sm750fb/sm750_hw.c | 16 ++++++++--------
3 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 858eda551..efadb9c73 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -622,26 +622,26 @@ static int sm750fb_set_drv(struct lynxfb_par *par)
output->paths = sm750_pnc;
crtc->channel = sm750_primary;
crtc->o_screen = 0;
- crtc->v_screen = sm750_dev->pvMem;
+ crtc->v_screen = sm750_dev->vram;
break;
case sm750_simul_sec:
output->paths = sm750_pnc;
crtc->channel = sm750_secondary;
crtc->o_screen = 0;
- crtc->v_screen = sm750_dev->pvMem;
+ crtc->v_screen = sm750_dev->vram;
break;
case sm750_dual_normal:
if (par->index == 0) {
output->paths = sm750_panel;
crtc->channel = sm750_primary;
crtc->o_screen = 0;
- crtc->v_screen = sm750_dev->pvMem;
+ crtc->v_screen = sm750_dev->vram;
} else {
output->paths = sm750_crt;
crtc->channel = sm750_secondary;
/* not consider of padding stuffs for o_screen,need fix */
crtc->o_screen = sm750_dev->vidmem_size >> 1;
- crtc->v_screen = sm750_dev->pvMem + crtc->o_screen;
+ crtc->v_screen = sm750_dev->vram + crtc->o_screen;
}
break;
case sm750_dual_swap:
@@ -649,7 +649,7 @@ static int sm750fb_set_drv(struct lynxfb_par *par)
output->paths = sm750_panel;
crtc->channel = sm750_secondary;
crtc->o_screen = 0;
- crtc->v_screen = sm750_dev->pvMem;
+ crtc->v_screen = sm750_dev->vram;
} else {
output->paths = sm750_crt;
crtc->channel = sm750_primary;
@@ -657,7 +657,7 @@ static int sm750fb_set_drv(struct lynxfb_par *par)
* need fix
*/
crtc->o_screen = sm750_dev->vidmem_size >> 1;
- crtc->v_screen = sm750_dev->pvMem + crtc->o_screen;
+ crtc->v_screen = sm750_dev->vram + crtc->o_screen;
}
break;
default:
@@ -755,13 +755,13 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
* must be set after crtc member initialized
*/
crtc->cursor.offset = crtc->o_screen + crtc->vidmem_size - 1024;
- crtc->cursor.mmio = sm750_dev->pvReg +
+ crtc->cursor.mmio = sm750_dev->reg +
0x800f0 + (int)crtc->channel * 0x140;
crtc->cursor.max_h = 64;
crtc->cursor.max_w = 64;
crtc->cursor.size = crtc->cursor.max_h * crtc->cursor.max_w * 2 / 8;
- crtc->cursor.vstart = sm750_dev->pvMem + crtc->cursor.offset;
+ crtc->cursor.vstart = sm750_dev->vram + crtc->cursor.offset;
memset_io(crtc->cursor.vstart, 0, crtc->cursor.size);
if (!g_hwcursor)
@@ -1028,7 +1028,7 @@ static int lynxfb_pci_probe(struct pci_dev *pdev,
sm750_dev->mtrr.vram = arch_phys_wc_add(sm750_dev->vidmem_start,
sm750_dev->vidmem_size);
- memset_io(sm750_dev->pvMem, 0, sm750_dev->vidmem_size);
+ memset_io(sm750_dev->vram, 0, sm750_dev->vidmem_size);
pci_set_drvdata(pdev, sm750_dev);
@@ -1059,8 +1059,8 @@ static void lynxfb_pci_remove(struct pci_dev *pdev)
sm750fb_framebuffer_release(sm750_dev);
arch_phys_wc_del(sm750_dev->mtrr.vram);
- iounmap(sm750_dev->pvReg);
- iounmap(sm750_dev->pvMem);
+ iounmap(sm750_dev->reg);
+ iounmap(sm750_dev->vram);
pci_release_region(pdev, 1);
kfree(g_settings);
}
diff --git a/drivers/staging/sm750fb/sm750.h b/drivers/staging/sm750fb/sm750.h
index 9da154f1a..dadf5874a 100644
--- a/drivers/staging/sm750fb/sm750.h
+++ b/drivers/staging/sm750fb/sm750.h
@@ -97,8 +97,8 @@ struct sm750_dev {
unsigned long vidreg_start;
__u32 vidmem_size;
__u32 vidreg_size;
- void __iomem *pvReg;
- unsigned char __iomem *pvMem;
+ void __iomem *reg;
+ unsigned char __iomem *vram;
/* locks*/
spinlock_t slock;
diff --git a/drivers/staging/sm750fb/sm750_hw.c b/drivers/staging/sm750fb/sm750_hw.c
index 59fb3a207..1b768be20 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -42,18 +42,18 @@ int hw_sm750_map(struct sm750_dev *sm750_dev, struct pci_dev *pdev)
}
/* now map mmio and vidmem */
- sm750_dev->pvReg =
+ sm750_dev->reg =
ioremap(sm750_dev->vidreg_start, sm750_dev->vidreg_size);
- if (!sm750_dev->pvReg) {
+ if (!sm750_dev->reg) {
dev_err(&pdev->dev, "mmio failed\n");
ret = -EFAULT;
goto err_release_region;
}
- sm750_dev->accel.dpr_base = sm750_dev->pvReg + DE_BASE_ADDR_TYPE1;
- sm750_dev->accel.dp_port_base = sm750_dev->pvReg + DE_PORT_ADDR_TYPE1;
+ sm750_dev->accel.dpr_base = sm750_dev->reg + DE_BASE_ADDR_TYPE1;
+ sm750_dev->accel.dp_port_base = sm750_dev->reg + DE_PORT_ADDR_TYPE1;
- mmio750 = sm750_dev->pvReg;
+ mmio750 = sm750_dev->reg;
sm750_set_chip_type(sm750_dev->devid, sm750_dev->revid);
sm750_dev->vidmem_start = pci_resource_start(pdev, 0);
@@ -66,9 +66,9 @@ int hw_sm750_map(struct sm750_dev *sm750_dev, struct pci_dev *pdev)
sm750_dev->vidmem_size = ddk750_get_vm_size();
/* reserve the vidmem space of smi adaptor */
- sm750_dev->pvMem =
+ sm750_dev->vram =
ioremap_wc(sm750_dev->vidmem_start, sm750_dev->vidmem_size);
- if (!sm750_dev->pvMem) {
+ if (!sm750_dev->vram) {
dev_err(&pdev->dev, "Map video memory failed\n");
ret = -EFAULT;
goto err_unmap_reg;
@@ -77,7 +77,7 @@ int hw_sm750_map(struct sm750_dev *sm750_dev, struct pci_dev *pdev)
return 0;
err_unmap_reg:
- iounmap(sm750_dev->pvReg);
+ iounmap(sm750_dev->reg);
err_release_region:
pci_release_region(pdev, 1);
return ret;
--
2.53.0
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox