tree:
https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.4
head: e22d97f8d4f8fae5de0ce382aeeea450bda8c08f
commit: e22d97f8d4f8fae5de0ce382aeeea450bda8c08f [60/60] CHROMIUM: camx: Re-enable
COMPILE_TEST
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git remote add chrome-os
https://chromium.googlesource.com/chromiumos/third_party/kernel
git fetch --no-tags chrome-os chromeos-5.4
git checkout e22d97f8d4f8fae5de0ce382aeeea450bda8c08f
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
> drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:312:2: error:
positional initialization of field in 'struct' declared with
'designated_init' attribute [-Werror=designated-init]
312 |
cdm_get_cmd_header_size,
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:312:2: note: (near initialization
for 'CDM170_ops')
> drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:312:2: error:
invalid initializer
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:312:2:
note: (near initialization for 'CDM170_ops.<anonymous>')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:313:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
313 | cdm_required_size_reg_continuous,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:313:2: note: (near initialization
for 'CDM170_ops')
> drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:313:2: error:
initialization of 'uint32_t (*)(void)' {aka 'unsigned int (*)(void)'} from
incompatible pointer type 'uint32_t (*)(uint32_t)' {aka 'unsigned int
(*)(unsigned int)'} [-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:313:2: note: (near initialization for
'CDM170_ops.cdm_required_size_dmi')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:314:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
314 | cdm_required_size_reg_random,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:314:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:314:2: error: initialization of
'uint32_t (*)(void)' {aka 'unsigned int (*)(void)'} from incompatible
pointer type 'uint32_t (*)(uint32_t)' {aka 'unsigned int (*)(unsigned
int)'} [-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:314:2: note: (near initialization
for 'CDM170_ops.cdm_offsetof_indirect_addr')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:315:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
315 | cdm_required_size_dmi,
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:315:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:316:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
316 | cdm_required_size_genirq,
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:316:2: note: (near initialization
for 'CDM170_ops')
> drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:316:2: error:
initialization of 'uint32_t (*)(uint32_t)' {aka 'unsigned int (*)(unsigned
int)'} from incompatible pointer type 'uint32_t (*)(void)' {aka 'unsigned
int (*)(void)'} [-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:316:2: note: (near initialization for
'CDM170_ops.cdm_required_size_reg_random')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:317:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
317 | cdm_required_size_indirect,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:317:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:317:2: error: initialization of
'uint32_t (*)(unsigned int)' {aka 'unsigned int (*)(unsigned int)'} from
incompatible pointer type 'uint32_t (*)(void)' {aka 'unsigned int
(*)(void)'} [-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:317:2: note: (near initialization
for 'CDM170_ops.cdm_get_cmd_header_size')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:318:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
318 | cdm_required_size_changebase,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:318:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:319:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
319 | cdm_offsetof_dmi_addr,
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:319:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:319:2: error: initialization of
'uint32_t * (*)(uint32_t *, uint32_t)' {aka 'unsigned int * (*)(unsigned int
*, unsigned int)'} from incompatible pointer type 'uint32_t (*)(void)' {aka
'unsigned int (*)(void)'} [-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:319:2: note: (near initialization
for 'CDM170_ops.cdm_write_changebase')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:320:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
320 | cdm_offsetof_indirect_addr,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:320:2: note: (near initialization
for 'CDM170_ops')
> drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:320:2: error:
initialization of 'uint32_t * (*)(uint32_t *, uint32_t, uint32_t, uint32_t *)'
{aka 'unsigned int * (*)(unsigned int *, unsigned int, unsigned int, unsigned int
*)'} from incompatible pointer type 'uint32_t (*)(void)' {aka 'unsigned
int (*)(void)'} [-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:320:2: note: (near initialization for
'CDM170_ops.cdm_write_regcontinuous')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:321:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
321 | cdm_write_regcontinuous,
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:321:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:321:2: error: initialization of
'uint32_t (*)(uint32_t)' {aka 'unsigned int (*)(unsigned int)'} from
incompatible pointer type 'uint32_t * (*)(uint32_t *, uint32_t, uint32_t, uint32_t
*)' {aka 'unsigned int * (*)(unsigned int *, unsigned int, unsigned int,
unsigned int *)'} [-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:321:2: note: (near initialization
for 'CDM170_ops.cdm_required_size_reg_continuous')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:322:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
322 | cdm_write_regrandom,
| ^~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:322:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:323:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
323 | cdm_write_dmi,
| ^~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:323:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:324:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
324 | cdm_write_indirect,
| ^~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:324:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:324:2: error: initialization of
'uint32_t (*)(void)' {aka 'unsigned int (*)(void)'} from incompatible
pointer type 'uint32_t * (*)(uint32_t *, uint32_t, uint32_t)' {aka 'unsigned
int * (*)(unsigned int *, unsigned int, unsigned int)'}
[-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:324:2: note: (near initialization
for 'CDM170_ops.cdm_required_size_indirect')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:325:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
325 | cdm_write_changebase,
| ^~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:325:2: note: (near initialization
for 'CDM170_ops')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:325:2: error: initialization of
'uint32_t * (*)(uint32_t *, uint32_t, uint32_t)' {aka 'unsigned int *
(*)(unsigned int *, unsigned int, unsigned int)'} from incompatible pointer type
'uint32_t * (*)(uint32_t *, uint32_t)' {aka 'unsigned int * (*)(unsigned int
*, unsigned int)'} [-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:325:2: note: (near initialization
for 'CDM170_ops.cdm_write_indirect')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:326:2: error: positional
initialization of field in 'struct' declared with 'designated_init'
attribute [-Werror=designated-init]
326 | cdm_write_genirq,
| ^~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:326:2: note: (near initialization
for 'CDM170_ops')
> drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:326:2: error:
initialization of 'uint32_t (*)(void)' {aka 'unsigned int (*)(void)'} from
incompatible pointer type 'void (*)(uint32_t *, uint32_t)' {aka 'void
(*)(unsigned int *, unsigned int)'} [-Werror=incompatible-pointer-types]
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:326:2: note: (near initialization for
'CDM170_ops.cdm_offsetof_dmi_addr')
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c: In function
'cam_cdm_util_reg_cont_write':
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:368:45: warning: comparison is
always false due to limited range of data type [-Wtype-limits]
368 | if ((!reg_cont->count) || (reg_cont->count > 0x10000) ||
| ^
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c: In function
'cam_cdm_util_reg_random_write':
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:399:49: warning: comparison is
always false due to limited range of data type [-Wtype-limits]
399 | if ((!reg_random->count) || (reg_random->count > 0x10000) ||
| ^
drivers/media/platform/camx/cam_cdm/cam_cdm_util.c: In function
'cam_cdm_util_cmd_buf_write':
> drivers/media/platform/camx/cam_cdm/cam_cdm_util.c:466:29:
warning: variable 'total_cmd_buf_size' set but not used
[-Wunused-but-set-variable]
466 | uint32_t cdm_cmd_type = 0,
total_cmd_buf_size = 0;
| ^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
--
drivers/media/platform/camx/cam_cdm/cam_cdm_core_common.c: In function
'cam_cdm_process_cmd':
> drivers/media/platform/camx/cam_cdm/cam_cdm_core_common.c:406:26:
warning: variable 'soc_data' set but not used [-Wunused-but-set-variable]
406 | struct cam_hw_soc_info *soc_data = NULL;
| ^~~~~~~~
--
drivers/media/platform/camx/cam_cdm/cam_cdm_hw_core.c: In function
'cam_hw_cdm_deinit':
> drivers/media/platform/camx/cam_cdm/cam_cdm_hw_core.c:789:18:
warning: variable 'cdm_core' set but not used [-Wunused-but-set-variable]
789 | struct cam_cdm *cdm_core = NULL;
| ^~~~~~~~
--
drivers/media/platform/camx/cam_core/cam_node.c: In function
'cam_node_shutdown':
> drivers/media/platform/camx/cam_core/cam_node.c:602:6: warning:
variable 'rc' set but not used [-Wunused-but-set-variable]
602 | int
rc = 0;
| ^~
--
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:503:7: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
503 | if (!CAM_CPAS_CLIENT_VALID(client_indx))
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:35:4: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
35 | ((CAM_CPAS_CLIENT_VALID(indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:38:4: note: in expansion of macro
'CAM_CPAS_CLIENT_REGISTERED'
38 | ((CAM_CPAS_CLIENT_REGISTERED(cpas_core, indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:509:7: note: in expansion of macro
'CAM_CPAS_CLIENT_STARTED'
509 | if (!CAM_CPAS_CLIENT_STARTED(cpas_core, client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c: In function
'cam_cpas_hw_reg_read':
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:551:7: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
551 | if (!CAM_CPAS_CLIENT_VALID(client_indx))
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:35:4: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
35 | ((CAM_CPAS_CLIENT_VALID(indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:38:4: note: in expansion of macro
'CAM_CPAS_CLIENT_REGISTERED'
38 | ((CAM_CPAS_CLIENT_REGISTERED(cpas_core, indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:557:7: note: in expansion of macro
'CAM_CPAS_CLIENT_STARTED'
557 | if (!CAM_CPAS_CLIENT_STARTED(cpas_core, client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c: In function
'cam_cpas_hw_update_axi_vote':
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:758:7: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
758 | if (!CAM_CPAS_CLIENT_VALID(client_indx))
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:35:4: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
35 | ((CAM_CPAS_CLIENT_VALID(indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:38:4: note: in expansion of macro
'CAM_CPAS_CLIENT_REGISTERED'
38 | ((CAM_CPAS_CLIENT_REGISTERED(cpas_core, indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:765:7: note: in expansion of macro
'CAM_CPAS_CLIENT_STARTED'
765 | if (!CAM_CPAS_CLIENT_STARTED(cpas_core, client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c: In function
'cam_cpas_hw_update_ahb_vote':
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:916:7: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
916 | if (!CAM_CPAS_CLIENT_VALID(client_indx))
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:35:4: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
35 | ((CAM_CPAS_CLIENT_VALID(indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:38:4: note: in expansion of macro
'CAM_CPAS_CLIENT_REGISTERED'
38 | ((CAM_CPAS_CLIENT_REGISTERED(cpas_core, indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:923:7: note: in expansion of macro
'CAM_CPAS_CLIENT_STARTED'
923 | if (!CAM_CPAS_CLIENT_STARTED(cpas_core, client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c: In function
'cam_cpas_hw_start':
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:993:7: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
993 | if (!CAM_CPAS_CLIENT_VALID(client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:35:4: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
35 | ((CAM_CPAS_CLIENT_VALID(indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:1002:7: note: in expansion of macro
'CAM_CPAS_CLIENT_REGISTERED'
1002 | if (!CAM_CPAS_CLIENT_REGISTERED(cpas_core, client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:35:4: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
35 | ((CAM_CPAS_CLIENT_VALID(indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:38:4: note: in expansion of macro
'CAM_CPAS_CLIENT_REGISTERED'
38 | ((CAM_CPAS_CLIENT_REGISTERED(cpas_core, indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:1009:6: note: in expansion of macro
'CAM_CPAS_CLIENT_STARTED'
1009 | if (CAM_CPAS_CLIENT_STARTED(cpas_core, client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
> drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:959:31:
warning: variable 'soc_private' set but not used [-Wunused-but-set-variable]
959 | struct cam_cpas_private_soc *soc_private = NULL;
| ^~~~~~~~~~~
In file included from drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:22:
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c: In function
'cam_cpas_hw_stop':
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:1115:7: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
1115 | if (!CAM_CPAS_CLIENT_VALID(client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:35:4: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
35 | ((CAM_CPAS_CLIENT_VALID(indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:38:4: note: in expansion of macro
'CAM_CPAS_CLIENT_REGISTERED'
38 | ((CAM_CPAS_CLIENT_REGISTERED(cpas_core, indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:1128:7: note: in expansion of macro
'CAM_CPAS_CLIENT_STARTED'
1128 | if (!CAM_CPAS_CLIENT_STARTED(cpas_core, client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:1092:31: warning: variable
'soc_private' set but not used [-Wunused-but-set-variable]
1092 | struct cam_cpas_private_soc *soc_private = NULL;
| ^~~~~~~~~~~
In file included from drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:22:
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c: In function
'cam_cpas_hw_unregister_client':
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:1326:7: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
1326 | if (!CAM_CPAS_CLIENT_VALID(client_indx))
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:35:4: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
35 | ((CAM_CPAS_CLIENT_VALID(indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:1333:7: note: in expansion of macro
'CAM_CPAS_CLIENT_REGISTERED'
1333 | if (!CAM_CPAS_CLIENT_REGISTERED(cpas_core, client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:33:9: warning: comparison of
unsigned expression >= 0 is always true [-Wtype-limits]
33 | ((indx >= 0) && (indx < CAM_CPAS_MAX_CLIENTS))
| ^~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:35:4: note: in expansion of macro
'CAM_CPAS_CLIENT_VALID'
35 | ((CAM_CPAS_CLIENT_VALID(indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.h:38:4: note: in expansion of macro
'CAM_CPAS_CLIENT_REGISTERED'
38 | ((CAM_CPAS_CLIENT_REGISTERED(cpas_core, indx)) && \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/camx/cam_cpas/cam_cpas_hw.c:1341:6: note: in expansion of macro
'CAM_CPAS_CLIENT_STARTED'
1341 | if (CAM_CPAS_CLIENT_STARTED(cpas_core, client_indx)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
--
drivers/media/platform/camx/cam_isp/cam_isp_context.c: In function
'__cam_isp_ctx_dump_req_info':
> drivers/media/platform/camx/cam_isp/cam_isp_context.c:2267:26:
warning: variable 'ctx_isp' set but not used [-Wunused-but-set-variable]
2267 | struct cam_isp_context *ctx_isp;
| ^~~~~~~
drivers/media/platform/camx/cam_isp/cam_isp_context.c: In function
'cam_isp_context_dump_active_request':
> drivers/media/platform/camx/cam_isp/cam_isp_context.c:4348:41:
warning: variable 'hw_update_data' set but not used [-Wunused-but-set-variable]
4348 | struct cam_isp_prepare_hw_update_data *hw_update_data = NULL;
| ^~~~~~~~~~~~~~
--
drivers/media/platform/camx/cam_cpas/cpas_top/cam_cpastop_hw.c: In function
'cam_cpastop_init_hw_version':
>
drivers/media/platform/camx/cam_cpas/cpas_top/cam_cpastop_hw.c:584:6: warning: variable
'rc' set but not used [-Wunused-but-set-variable]
584 | int rc = 0;
| ^~
--
drivers/media/platform/camx/cam_jpeg/cam_jpeg_context.c: In function
'cam_jpeg_context_dump_active_request':
> drivers/media/platform/camx/cam_jpeg/cam_jpeg_context.c:37:6:
warning: variable 'closest_port' set but not used [-Wunused-but-set-variable]
37 | int closest_port;
| ^~~~~~~~~~~~
--
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c: In function
'cam_ife_hw_mgr_acquire_res_ife_csid_pxl':
>
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c:1569:44: warning: variable
'ife_hw_mgr' set but not used [-Wunused-but-set-variable]
1569 | struct
cam_ife_hw_mgr *ife_hw_mgr;
| ^~~~~~~~~~
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c: In function
'cam_ife_hw_mgr_acquire_res_ife_csid_rdi':
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c:1709:39: warning:
variable 'ife_hw_mgr' set but not used [-Wunused-but-set-variable]
1709 | struct cam_ife_hw_mgr *ife_hw_mgr;
| ^~~~~~~~~~
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c: In function
'cam_ife_hw_mgr_preprocess_port':
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c:1892:37: warning:
variable 'ife_hw_mgr' set but not used [-Wunused-but-set-variable]
1892 | struct cam_ife_hw_mgr *ife_hw_mgr;
| ^~~~~~~~~~
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c: In function
'cam_ife_mgr_acquire_hw_for_ctx':
>
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c:1930:6: warning: variable
'is_dual_vfe' set but not used [-Wunused-but-set-variable]
1930 | int
is_dual_vfe = 0;
| ^~~~~~~~~~~
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c: In function
'cam_ife_hw_mgr_handle_buf_done_for_hw_res':
>
drivers/media/platform/camx/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c:5877:12: warning: variable
'error_resc_handle' set but not used [-Wunused-but-set-variable]
5877 |
uint32_t error_resc_handle[CAM_IFE_HW_OUT_RES_MAX];
| ^~~~~~~~~~~~~~~~~
..
vim +312 drivers/media/platform/camx/cam_cdm/cam_cdm_util.c
46ba272ec14153 Atanas Filipov 2020-06-11 310
46ba272ec14153 Atanas Filipov 2020-06-11 311 struct cam_cdm_utils_ops CDM170_ops = {
46ba272ec14153 Atanas Filipov 2020-06-11 @312 cdm_get_cmd_header_size,
46ba272ec14153 Atanas Filipov 2020-06-11 @313 cdm_required_size_reg_continuous,
46ba272ec14153 Atanas Filipov 2020-06-11 314 cdm_required_size_reg_random,
46ba272ec14153 Atanas Filipov 2020-06-11 315 cdm_required_size_dmi,
46ba272ec14153 Atanas Filipov 2020-06-11 @316 cdm_required_size_genirq,
46ba272ec14153 Atanas Filipov 2020-06-11 317 cdm_required_size_indirect,
46ba272ec14153 Atanas Filipov 2020-06-11 318 cdm_required_size_changebase,
46ba272ec14153 Atanas Filipov 2020-06-11 319 cdm_offsetof_dmi_addr,
46ba272ec14153 Atanas Filipov 2020-06-11 @320 cdm_offsetof_indirect_addr,
46ba272ec14153 Atanas Filipov 2020-06-11 321 cdm_write_regcontinuous,
46ba272ec14153 Atanas Filipov 2020-06-11 322 cdm_write_regrandom,
46ba272ec14153 Atanas Filipov 2020-06-11 323 cdm_write_dmi,
46ba272ec14153 Atanas Filipov 2020-06-11 324 cdm_write_indirect,
46ba272ec14153 Atanas Filipov 2020-06-11 325 cdm_write_changebase,
46ba272ec14153 Atanas Filipov 2020-06-11 @326 cdm_write_genirq,
46ba272ec14153 Atanas Filipov 2020-06-11 327 };
46ba272ec14153 Atanas Filipov 2020-06-11 328
8c8872014dc856 Ricardo Ribalda 2021-05-28 329 static int
8c8872014dc856 Ricardo Ribalda 2021-05-28 330 cam_cdm_get_ioremap_from_base(
8c8872014dc856 Ricardo Ribalda 2021-05-28 331 uint32_t hw_base,
46ba272ec14153 Atanas Filipov 2020-06-11 332 uint32_t base_array_size,
46ba272ec14153 Atanas Filipov 2020-06-11 333 struct cam_soc_reg_map
*base_table[CAM_SOC_MAX_BLOCK],
46ba272ec14153 Atanas Filipov 2020-06-11 334 void __iomem **device_base)
46ba272ec14153 Atanas Filipov 2020-06-11 335 {
46ba272ec14153 Atanas Filipov 2020-06-11 336 int ret = -EINVAL, i;
46ba272ec14153 Atanas Filipov 2020-06-11 337
46ba272ec14153 Atanas Filipov 2020-06-11 338 for (i = 0; i < base_array_size; i++)
{
46ba272ec14153 Atanas Filipov 2020-06-11 339 if (base_table[i])
46ba272ec14153 Atanas Filipov 2020-06-11 340 CAM_DBG(CAM_CDM, "In loop %d
ioremap for %x addr=%x",
46ba272ec14153 Atanas Filipov 2020-06-11 341 i, (base_table[i])->mem_cam_base,
hw_base);
46ba272ec14153 Atanas Filipov 2020-06-11 342 if ((base_table[i]) &&
46ba272ec14153 Atanas Filipov 2020-06-11 343 ((base_table[i])->mem_cam_base ==
hw_base)) {
46ba272ec14153 Atanas Filipov 2020-06-11 344 *device_base =
(base_table[i])->mem_base;
46ba272ec14153 Atanas Filipov 2020-06-11 345 ret = 0;
46ba272ec14153 Atanas Filipov 2020-06-11 346 break;
46ba272ec14153 Atanas Filipov 2020-06-11 347 }
46ba272ec14153 Atanas Filipov 2020-06-11 348 }
46ba272ec14153 Atanas Filipov 2020-06-11 349
46ba272ec14153 Atanas Filipov 2020-06-11 350 return ret;
46ba272ec14153 Atanas Filipov 2020-06-11 351 }
46ba272ec14153 Atanas Filipov 2020-06-11 352
46ba272ec14153 Atanas Filipov 2020-06-11 353 static int
cam_cdm_util_reg_cont_write(void __iomem *base_addr,
46ba272ec14153 Atanas Filipov 2020-06-11 354 uint32_t *cmd_buf, uint32_t cmd_buf_size,
uint32_t *used_bytes)
46ba272ec14153 Atanas Filipov 2020-06-11 355 {
46ba272ec14153 Atanas Filipov 2020-06-11 356 int ret = 0;
46ba272ec14153 Atanas Filipov 2020-06-11 357 uint32_t *data;
46ba272ec14153 Atanas Filipov 2020-06-11 358 struct cdm_regcontinuous_cmd *reg_cont;
46ba272ec14153 Atanas Filipov 2020-06-11 359
46ba272ec14153 Atanas Filipov 2020-06-11 360 if ((cmd_buf_size <
cdm_get_cmd_header_size(CAM_CDM_CMD_REG_CONT)) ||
46ba272ec14153 Atanas Filipov 2020-06-11 361 (!base_addr)) {
46ba272ec14153 Atanas Filipov 2020-06-11 362 CAM_ERR(CAM_CDM, "invalid base addr
and data length %d %pK",
46ba272ec14153 Atanas Filipov 2020-06-11 363 cmd_buf_size, base_addr);
46ba272ec14153 Atanas Filipov 2020-06-11 364 return -EINVAL;
46ba272ec14153 Atanas Filipov 2020-06-11 365 }
46ba272ec14153 Atanas Filipov 2020-06-11 366
46ba272ec14153 Atanas Filipov 2020-06-11 367 reg_cont = (struct cdm_regcontinuous_cmd
*)cmd_buf;
46ba272ec14153 Atanas Filipov 2020-06-11 368 if ((!reg_cont->count) ||
(reg_cont->count > 0x10000) ||
46ba272ec14153 Atanas Filipov 2020-06-11 369 (((reg_cont->count *
sizeof(uint32_t)) +
46ba272ec14153 Atanas Filipov 2020-06-11 370
cdm_get_cmd_header_size(CAM_CDM_CMD_REG_CONT)) >
46ba272ec14153 Atanas Filipov 2020-06-11 371 cmd_buf_size)) {
46ba272ec14153 Atanas Filipov 2020-06-11 372 CAM_ERR(CAM_CDM, "buffer size %d is
not sufficient for count%d",
46ba272ec14153 Atanas Filipov 2020-06-11 373 cmd_buf_size, reg_cont->count);
46ba272ec14153 Atanas Filipov 2020-06-11 374 return -EINVAL;
46ba272ec14153 Atanas Filipov 2020-06-11 375 }
46ba272ec14153 Atanas Filipov 2020-06-11 376 data = cmd_buf +
cdm_get_cmd_header_size(CAM_CDM_CMD_REG_CONT);
46ba272ec14153 Atanas Filipov 2020-06-11 377 cam_io_memcpy(base_addr +
reg_cont->offset, data,
46ba272ec14153 Atanas Filipov 2020-06-11 378 reg_cont->count * sizeof(uint32_t));
46ba272ec14153 Atanas Filipov 2020-06-11 379
46ba272ec14153 Atanas Filipov 2020-06-11 380 *used_bytes = (reg_cont->count *
sizeof(uint32_t)) +
46ba272ec14153 Atanas Filipov 2020-06-11 381 (4 *
cdm_get_cmd_header_size(CAM_CDM_CMD_REG_CONT));
46ba272ec14153 Atanas Filipov 2020-06-11 382
46ba272ec14153 Atanas Filipov 2020-06-11 383 return ret;
46ba272ec14153 Atanas Filipov 2020-06-11 384 }
46ba272ec14153 Atanas Filipov 2020-06-11 385
46ba272ec14153 Atanas Filipov 2020-06-11 386 static int
cam_cdm_util_reg_random_write(void __iomem *base_addr,
46ba272ec14153 Atanas Filipov 2020-06-11 387 uint32_t *cmd_buf, uint32_t cmd_buf_size,
uint32_t *used_bytes)
46ba272ec14153 Atanas Filipov 2020-06-11 388 {
46ba272ec14153 Atanas Filipov 2020-06-11 389 uint32_t i;
46ba272ec14153 Atanas Filipov 2020-06-11 390 struct cdm_regrandom_cmd *reg_random;
46ba272ec14153 Atanas Filipov 2020-06-11 391 uint32_t *data;
46ba272ec14153 Atanas Filipov 2020-06-11 392
46ba272ec14153 Atanas Filipov 2020-06-11 393 if (!base_addr) {
46ba272ec14153 Atanas Filipov 2020-06-11 394 CAM_ERR(CAM_CDM, "invalid base
address");
46ba272ec14153 Atanas Filipov 2020-06-11 395 return -EINVAL;
46ba272ec14153 Atanas Filipov 2020-06-11 396 }
46ba272ec14153 Atanas Filipov 2020-06-11 397
46ba272ec14153 Atanas Filipov 2020-06-11 398 reg_random = (struct cdm_regrandom_cmd *)
cmd_buf;
46ba272ec14153 Atanas Filipov 2020-06-11 399 if ((!reg_random->count) ||
(reg_random->count > 0x10000) ||
46ba272ec14153 Atanas Filipov 2020-06-11 400 (((reg_random->count *
(sizeof(uint32_t) * 2)) +
46ba272ec14153 Atanas Filipov 2020-06-11 401
cdm_get_cmd_header_size(CAM_CDM_CMD_REG_RANDOM)) >
46ba272ec14153 Atanas Filipov 2020-06-11 402 cmd_buf_size)) {
46ba272ec14153 Atanas Filipov 2020-06-11 403 CAM_ERR(CAM_CDM, "invalid reg_count
%d cmd_buf_size %d",
46ba272ec14153 Atanas Filipov 2020-06-11 404 reg_random->count, cmd_buf_size);
46ba272ec14153 Atanas Filipov 2020-06-11 405 return -EINVAL;
46ba272ec14153 Atanas Filipov 2020-06-11 406 }
46ba272ec14153 Atanas Filipov 2020-06-11 407 data = cmd_buf +
cdm_get_cmd_header_size(CAM_CDM_CMD_REG_RANDOM);
46ba272ec14153 Atanas Filipov 2020-06-11 408
46ba272ec14153 Atanas Filipov 2020-06-11 409 for (i = 0; i < reg_random->count;
i++) {
46ba272ec14153 Atanas Filipov 2020-06-11 410 CAM_DBG(CAM_CDM, "reg random:
offset %pK, value 0x%x",
46ba272ec14153 Atanas Filipov 2020-06-11 411 ((void __iomem *)(base_addr +
data[0])),
46ba272ec14153 Atanas Filipov 2020-06-11 412 data[1]);
46ba272ec14153 Atanas Filipov 2020-06-11 413 cam_io_w(data[1], base_addr + data[0]);
46ba272ec14153 Atanas Filipov 2020-06-11 414 data += 2;
46ba272ec14153 Atanas Filipov 2020-06-11 415 }
46ba272ec14153 Atanas Filipov 2020-06-11 416
46ba272ec14153 Atanas Filipov 2020-06-11 417 *used_bytes = ((reg_random->count *
(sizeof(uint32_t) * 2)) +
46ba272ec14153 Atanas Filipov 2020-06-11 418 (4 *
cdm_get_cmd_header_size(CAM_CDM_CMD_REG_RANDOM)));
46ba272ec14153 Atanas Filipov 2020-06-11 419
46ba272ec14153 Atanas Filipov 2020-06-11 420 return 0;
46ba272ec14153 Atanas Filipov 2020-06-11 421 }
46ba272ec14153 Atanas Filipov 2020-06-11 422
46ba272ec14153 Atanas Filipov 2020-06-11 423 static int
cam_cdm_util_swd_dmi_write(uint32_t cdm_cmd_type,
46ba272ec14153 Atanas Filipov 2020-06-11 424 void __iomem *base_addr, uint32_t
*cmd_buf, uint32_t cmd_buf_size,
46ba272ec14153 Atanas Filipov 2020-06-11 425 uint32_t *used_bytes)
46ba272ec14153 Atanas Filipov 2020-06-11 426 {
46ba272ec14153 Atanas Filipov 2020-06-11 427 uint32_t i;
46ba272ec14153 Atanas Filipov 2020-06-11 428 struct cdm_dmi_cmd *swd_dmi;
46ba272ec14153 Atanas Filipov 2020-06-11 429 uint32_t *data;
46ba272ec14153 Atanas Filipov 2020-06-11 430
46ba272ec14153 Atanas Filipov 2020-06-11 431 swd_dmi = (struct cdm_dmi_cmd *)cmd_buf;
46ba272ec14153 Atanas Filipov 2020-06-11 432
46ba272ec14153 Atanas Filipov 2020-06-11 433 if (cmd_buf_size <
(cdm_required_size_dmi() + swd_dmi->length + 1)) {
46ba272ec14153 Atanas Filipov 2020-06-11 434 CAM_ERR(CAM_CDM, "invalid
CDM_SWD_DMI length %d",
46ba272ec14153 Atanas Filipov 2020-06-11 435 swd_dmi->length + 1);
46ba272ec14153 Atanas Filipov 2020-06-11 436 return -EINVAL;
46ba272ec14153 Atanas Filipov 2020-06-11 437 }
46ba272ec14153 Atanas Filipov 2020-06-11 438 data = cmd_buf +
cdm_required_size_dmi();
46ba272ec14153 Atanas Filipov 2020-06-11 439
46ba272ec14153 Atanas Filipov 2020-06-11 440 if (cdm_cmd_type ==
CAM_CDM_CMD_SWD_DMI_64) {
46ba272ec14153 Atanas Filipov 2020-06-11 441 for (i = 0; i < (swd_dmi->length +
1)/8; i++) {
46ba272ec14153 Atanas Filipov 2020-06-11 442 cam_io_w_mb(data[0], base_addr +
46ba272ec14153 Atanas Filipov 2020-06-11 443 swd_dmi->DMIAddr +
CAM_CDM_DMI_DATA_LO_OFFSET);
46ba272ec14153 Atanas Filipov 2020-06-11 444 cam_io_w_mb(data[1], base_addr +
46ba272ec14153 Atanas Filipov 2020-06-11 445 swd_dmi->DMIAddr +
CAM_CDM_DMI_DATA_HI_OFFSET);
46ba272ec14153 Atanas Filipov 2020-06-11 446 data += 2;
46ba272ec14153 Atanas Filipov 2020-06-11 447 }
46ba272ec14153 Atanas Filipov 2020-06-11 448 } else {
46ba272ec14153 Atanas Filipov 2020-06-11 449 for (i = 0; i < (swd_dmi->length +
1)/4; i++) {
46ba272ec14153 Atanas Filipov 2020-06-11 450 cam_io_w_mb(data[0], base_addr +
46ba272ec14153 Atanas Filipov 2020-06-11 451 swd_dmi->DMIAddr +
CAM_CDM_DMI_DATA_LO_OFFSET);
46ba272ec14153 Atanas Filipov 2020-06-11 452 data += 1;
46ba272ec14153 Atanas Filipov 2020-06-11 453 }
46ba272ec14153 Atanas Filipov 2020-06-11 454 }
46ba272ec14153 Atanas Filipov 2020-06-11 455 *used_bytes = (4 *
cdm_required_size_dmi()) + swd_dmi->length + 1;
46ba272ec14153 Atanas Filipov 2020-06-11 456
46ba272ec14153 Atanas Filipov 2020-06-11 457 return 0;
46ba272ec14153 Atanas Filipov 2020-06-11 458 }
46ba272ec14153 Atanas Filipov 2020-06-11 459
46ba272ec14153 Atanas Filipov 2020-06-11 460 int cam_cdm_util_cmd_buf_write(void
__iomem **current_device_base,
46ba272ec14153 Atanas Filipov 2020-06-11 461 uint32_t *cmd_buf, uint32_t
cmd_buf_size,
46ba272ec14153 Atanas Filipov 2020-06-11 462 struct cam_soc_reg_map
*base_table[CAM_SOC_MAX_BLOCK],
46ba272ec14153 Atanas Filipov 2020-06-11 463 uint32_t base_array_size, uint8_t
bl_tag)
46ba272ec14153 Atanas Filipov 2020-06-11 464 {
46ba272ec14153 Atanas Filipov 2020-06-11 465 int ret = 0;
46ba272ec14153 Atanas Filipov 2020-06-11 @466 uint32_t cdm_cmd_type = 0,
total_cmd_buf_size = 0;
46ba272ec14153 Atanas Filipov 2020-06-11 467 uint32_t used_bytes = 0;
46ba272ec14153 Atanas Filipov 2020-06-11 468
46ba272ec14153 Atanas Filipov 2020-06-11 469 total_cmd_buf_size = cmd_buf_size;
46ba272ec14153 Atanas Filipov 2020-06-11 470
46ba272ec14153 Atanas Filipov 2020-06-11 471 while (cmd_buf_size > 0) {
46ba272ec14153 Atanas Filipov 2020-06-11 472 CAM_DBG(CAM_CDM, "cmd
data=%x", *cmd_buf);
46ba272ec14153 Atanas Filipov 2020-06-11 473 cdm_cmd_type = (*cmd_buf >>
CAM_CDM_COMMAND_OFFSET);
46ba272ec14153 Atanas Filipov 2020-06-11 474 switch (cdm_cmd_type) {
46ba272ec14153 Atanas Filipov 2020-06-11 475 case CAM_CDM_CMD_REG_CONT: {
46ba272ec14153 Atanas Filipov 2020-06-11 476 ret =
cam_cdm_util_reg_cont_write(*current_device_base,
46ba272ec14153 Atanas Filipov 2020-06-11 477 cmd_buf, cmd_buf_size,
&used_bytes);
46ba272ec14153 Atanas Filipov 2020-06-11 478 if (ret)
46ba272ec14153 Atanas Filipov 2020-06-11 479 break;
46ba272ec14153 Atanas Filipov 2020-06-11 480
46ba272ec14153 Atanas Filipov 2020-06-11 481 if (used_bytes > 0) {
46ba272ec14153 Atanas Filipov 2020-06-11 482 cmd_buf_size -= used_bytes;
46ba272ec14153 Atanas Filipov 2020-06-11 483 cmd_buf += used_bytes/4;
46ba272ec14153 Atanas Filipov 2020-06-11 484 }
46ba272ec14153 Atanas Filipov 2020-06-11 485 }
46ba272ec14153 Atanas Filipov 2020-06-11 486 break;
46ba272ec14153 Atanas Filipov 2020-06-11 487 case CAM_CDM_CMD_REG_RANDOM: {
46ba272ec14153 Atanas Filipov 2020-06-11 488 ret = cam_cdm_util_reg_random_write(
46ba272ec14153 Atanas Filipov 2020-06-11 489 *current_device_base, cmd_buf,
cmd_buf_size,
46ba272ec14153 Atanas Filipov 2020-06-11 490 &used_bytes);
46ba272ec14153 Atanas Filipov 2020-06-11 491 if (ret)
46ba272ec14153 Atanas Filipov 2020-06-11 492 break;
46ba272ec14153 Atanas Filipov 2020-06-11 493
46ba272ec14153 Atanas Filipov 2020-06-11 494 if (used_bytes > 0) {
46ba272ec14153 Atanas Filipov 2020-06-11 495 cmd_buf_size -= used_bytes;
46ba272ec14153 Atanas Filipov 2020-06-11 496 cmd_buf += used_bytes / 4;
46ba272ec14153 Atanas Filipov 2020-06-11 497 }
46ba272ec14153 Atanas Filipov 2020-06-11 498 }
46ba272ec14153 Atanas Filipov 2020-06-11 499 break;
46ba272ec14153 Atanas Filipov 2020-06-11 500 case CAM_CDM_CMD_SWD_DMI_32:
46ba272ec14153 Atanas Filipov 2020-06-11 501 case CAM_CDM_CMD_SWD_DMI_64: {
46ba272ec14153 Atanas Filipov 2020-06-11 502 if (*current_device_base == 0) {
46ba272ec14153 Atanas Filipov 2020-06-11 503 CAM_ERR(CAM_CDM,
46ba272ec14153 Atanas Filipov 2020-06-11 504 "Got SWI DMI cmd =%d for invalid
hw",
46ba272ec14153 Atanas Filipov 2020-06-11 505 cdm_cmd_type);
46ba272ec14153 Atanas Filipov 2020-06-11 506 ret = -EINVAL;
46ba272ec14153 Atanas Filipov 2020-06-11 507 break;
46ba272ec14153 Atanas Filipov 2020-06-11 508 }
46ba272ec14153 Atanas Filipov 2020-06-11 509 ret =
cam_cdm_util_swd_dmi_write(cdm_cmd_type,
46ba272ec14153 Atanas Filipov 2020-06-11 510 *current_device_base, cmd_buf,
cmd_buf_size,
46ba272ec14153 Atanas Filipov 2020-06-11 511 &used_bytes);
46ba272ec14153 Atanas Filipov 2020-06-11 512 if (ret)
46ba272ec14153 Atanas Filipov 2020-06-11 513 break;
46ba272ec14153 Atanas Filipov 2020-06-11 514
46ba272ec14153 Atanas Filipov 2020-06-11 515 if (used_bytes > 0) {
46ba272ec14153 Atanas Filipov 2020-06-11 516 cmd_buf_size -= used_bytes;
46ba272ec14153 Atanas Filipov 2020-06-11 517 cmd_buf += used_bytes / 4;
46ba272ec14153 Atanas Filipov 2020-06-11 518 }
46ba272ec14153 Atanas Filipov 2020-06-11 519 }
46ba272ec14153 Atanas Filipov 2020-06-11 520 break;
46ba272ec14153 Atanas Filipov 2020-06-11 521 case CAM_CDM_CMD_CHANGE_BASE: {
46ba272ec14153 Atanas Filipov 2020-06-11 522 struct cdm_changebase_cmd
*change_base_cmd =
46ba272ec14153 Atanas Filipov 2020-06-11 523 (struct cdm_changebase_cmd *)cmd_buf;
46ba272ec14153 Atanas Filipov 2020-06-11 524
46ba272ec14153 Atanas Filipov 2020-06-11 525 ret = cam_cdm_get_ioremap_from_base(
46ba272ec14153 Atanas Filipov 2020-06-11 526 change_base_cmd->base,
base_array_size,
46ba272ec14153 Atanas Filipov 2020-06-11 527 base_table, current_device_base);
46ba272ec14153 Atanas Filipov 2020-06-11 528 if (ret != 0) {
46ba272ec14153 Atanas Filipov 2020-06-11 529 CAM_ERR(CAM_CDM,
46ba272ec14153 Atanas Filipov 2020-06-11 530 "Get ioremap change base failed
%x",
46ba272ec14153 Atanas Filipov 2020-06-11 531 change_base_cmd->base);
46ba272ec14153 Atanas Filipov 2020-06-11 532 break;
46ba272ec14153 Atanas Filipov 2020-06-11 533 }
46ba272ec14153 Atanas Filipov 2020-06-11 534 CAM_DBG(CAM_CDM, "Got ioremap for
%x addr=%pK",
46ba272ec14153 Atanas Filipov 2020-06-11 535 change_base_cmd->base,
46ba272ec14153 Atanas Filipov 2020-06-11 536 current_device_base);
46ba272ec14153 Atanas Filipov 2020-06-11 537 cmd_buf_size -= (4 *
46ba272ec14153 Atanas Filipov 2020-06-11 538 cdm_required_size_changebase());
46ba272ec14153 Atanas Filipov 2020-06-11 539 cmd_buf +=
cdm_required_size_changebase();
46ba272ec14153 Atanas Filipov 2020-06-11 540 }
46ba272ec14153 Atanas Filipov 2020-06-11 541 break;
46ba272ec14153 Atanas Filipov 2020-06-11 542 default:
46ba272ec14153 Atanas Filipov 2020-06-11 543 CAM_ERR(CAM_CDM, "unsupported
cdm_cmd_type type 0%x",
46ba272ec14153 Atanas Filipov 2020-06-11 544 cdm_cmd_type);
46ba272ec14153 Atanas Filipov 2020-06-11 545 ret = -EINVAL;
46ba272ec14153 Atanas Filipov 2020-06-11 546 break;
46ba272ec14153 Atanas Filipov 2020-06-11 547 }
46ba272ec14153 Atanas Filipov 2020-06-11 548
46ba272ec14153 Atanas Filipov 2020-06-11 549 if (ret < 0)
46ba272ec14153 Atanas Filipov 2020-06-11 550 break;
46ba272ec14153 Atanas Filipov 2020-06-11 551 }
46ba272ec14153 Atanas Filipov 2020-06-11 552
46ba272ec14153 Atanas Filipov 2020-06-11 553 return ret;
46ba272ec14153 Atanas Filipov 2020-06-11 554 }
46ba272ec14153 Atanas Filipov 2020-06-11 555
:::::: The code at line 312 was first introduced by commit
:::::: 46ba272ec141535d56c5a9117d7b3775c84cd466 CHROMIUM: media: camx: soc: Add initial
drivers
:::::: TO: Atanas Filipov <afilipov(a)mm-sol.com>
:::::: CC: Commit Bot <commit-bot(a)chromium.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org