Hi Andy, I love your patch! Yet something to improve: [auto build test ERROR on linusw-pinctrl/devel] [also build test ERROR on linus/master v6.0 next-20221007] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/pinctrl-Clean-up-headers/20221007-183311 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel config: sh-allmodconfig compiler: sh4-linux-gcc (GCC) 12.1.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 # https://github.com/intel-lab-lkp/linux/commit/5b392edeea764a64953fbab65c9a06b2745ebdd7 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Andy-Shevchenko/pinctrl-Clean-up-headers/20221007-183311 git checkout 5b392edeea764a64953fbab65c9a06b2745ebdd7 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sh SHELL=/bin/bash drivers/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All error/warnings (new ones prefixed by >>): drivers/pinctrl/pinctrl-axp209.c: In function 'axp20x_gpio_input': >> drivers/pinctrl/pinctrl-axp209.c:122:16: error: implicit declaration of function 'pinctrl_gpio_direction_input' [-Werror=implicit-function-declaration] 122 | return pinctrl_gpio_direction_input(chip->base + offset); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors -- drivers/pinctrl/pinctrl-ocelot.c: In function 'ocelot_gpio_direction_input': >> drivers/pinctrl/pinctrl-ocelot.c:1775:16: error: implicit declaration of function 'pinctrl_gpio_direction_input'; did you mean 'ocelot_gpio_direction_input'? [-Werror=implicit-function-declaration] 1775 | return pinctrl_gpio_direction_input(chip->base + offset); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ocelot_gpio_direction_input drivers/pinctrl/pinctrl-ocelot.c: In function 'ocelot_gpio_direction_output': >> drivers/pinctrl/pinctrl-ocelot.c:1791:16: error: implicit declaration of function 'pinctrl_gpio_direction_output'; did you mean 'ocelot_gpio_direction_output'? [-Werror=implicit-function-declaration] 1791 | return pinctrl_gpio_direction_output(chip->base + offset); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ocelot_gpio_direction_output cc1: some warnings being treated as errors -- drivers/pinctrl/pinctrl-single.c: In function 'pcs_pin_dbg_show': >> drivers/pinctrl/pinctrl-single.c:313:9: error: implicit declaration of function 'seq_printf'; did you mean 'bstr_printf'? [-Werror=implicit-function-declaration] 313 | seq_printf(s, "%zx %08x %s ", pa, val, DRIVER_NAME); | ^~~~~~~~~~ | bstr_printf cc1: some warnings being treated as errors -- drivers/pinctrl/pinctrl-stmfx.c: In function 'stmfx_pinconf_dbg_show': >> drivers/pinctrl/pinctrl-stmfx.c:371:17: error: implicit declaration of function 'seq_printf'; did you mean 'bstr_printf'? [-Werror=implicit-function-declaration] 371 | seq_printf(s, "output %s ", val ? "high" : "low"); | ^~~~~~~~~~ | bstr_printf >> drivers/pinctrl/pinctrl-stmfx.c:376:25: error: implicit declaration of function 'seq_puts' [-Werror=implicit-function-declaration] 376 | seq_puts(s, "push pull no pull "); | ^~~~~~~~ cc1: some warnings being treated as errors -- drivers/gpio/gpio-tegra186.c: In function 'tegra186_irq_print_chip': >> drivers/gpio/gpio-tegra186.c:540:9: error: implicit declaration of function 'seq_printf'; did you mean 'bstr_printf'? [-Werror=implicit-function-declaration] 540 | seq_printf(p, dev_name(gc->parent)); | ^~~~~~~~~~ | bstr_printf cc1: some warnings being treated as errors -- drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c: In function 'configure_memdma_and_inputblock': >> drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c:524:24: error: implicit declaration of function 'pinctrl_lookup_state' [-Werror=implicit-function-declaration] 524 | tsin->pstate = pinctrl_lookup_state(fei->pinctrl, tsin_pin_name); | ^~~~~~~~~~~~~~~~~~~~ >> drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c:524:22: warning: assignment to 'struct pinctrl_state *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 524 | tsin->pstate = pinctrl_lookup_state(fei->pinctrl, tsin_pin_name); | ^ >> drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c:532:15: error: implicit declaration of function 'pinctrl_select_state' [-Werror=implicit-function-declaration] 532 | ret = pinctrl_select_state(fei->pinctrl, tsin->pstate); | ^~~~~~~~~~~~~~~~~~~~ drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c: In function 'c8sectpfe_probe': >> drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c:742:24: error: implicit declaration of function 'devm_pinctrl_get'; did you mean 'of_pinctrl_get'? [-Werror=implicit-function-declaration] 742 | fei->pinctrl = devm_pinctrl_get(dev); | ^~~~~~~~~~~~~~~~ | of_pinctrl_get >> drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c:742:22: warning: assignment to 'struct pinctrl *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 742 | fei->pinctrl = devm_pinctrl_get(dev); | ^ cc1: some warnings being treated as errors -- drivers/pinctrl/freescale/pinctrl-imx.c: In function 'imx_pin_dbg_show': >> drivers/pinctrl/freescale/pinctrl-imx.c:53:9: error: implicit declaration of function 'seq_printf'; did you mean 'bstr_printf'? [-Werror=implicit-function-declaration] 53 | seq_printf(s, "%s", dev_name(pctldev->dev)); | ^~~~~~~~~~ | bstr_printf drivers/pinctrl/freescale/pinctrl-imx.c: In function 'imx_pinconf_dbg_show': >> drivers/pinctrl/freescale/pinctrl-imx.c:448:25: error: implicit declaration of function 'seq_puts' [-Werror=implicit-function-declaration] 448 | seq_puts(s, "N/A"); | ^~~~~~~~ cc1: some warnings being treated as errors -- drivers/pinctrl/sprd/pinctrl-sprd.c: In function 'sprd_pinctrl_shutdown': >> drivers/pinctrl/sprd/pinctrl-sprd.c:1125:18: error: implicit declaration of function 'devm_pinctrl_get'; did you mean 'of_pinctrl_get'? [-Werror=implicit-function-declaration] 1125 | pinctl = devm_pinctrl_get(&pdev->dev); | ^~~~~~~~~~~~~~~~ | of_pinctrl_get >> drivers/pinctrl/sprd/pinctrl-sprd.c:1125:16: warning: assignment to 'struct pinctrl *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 1125 | pinctl = devm_pinctrl_get(&pdev->dev); | ^ >> drivers/pinctrl/sprd/pinctrl-sprd.c:1128:17: error: implicit declaration of function 'pinctrl_lookup_state' [-Werror=implicit-function-declaration] 1128 | state = pinctrl_lookup_state(pinctl, "shutdown"); | ^~~~~~~~~~~~~~~~~~~~ >> drivers/pinctrl/sprd/pinctrl-sprd.c:1128:15: warning: assignment to 'struct pinctrl_state *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 1128 | state = pinctrl_lookup_state(pinctl, "shutdown"); | ^ >> drivers/pinctrl/sprd/pinctrl-sprd.c:1131:9: error: implicit declaration of function 'pinctrl_select_state' [-Werror=implicit-function-declaration] 1131 | pinctrl_select_state(pinctl, state); | ^~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors -- drivers/pinctrl/ti/pinctrl-ti-iodelay.c: In function 'ti_iodelay_pin_dbg_show': >> drivers/pinctrl/ti/pinctrl-ti-iodelay.c:676:9: error: implicit declaration of function 'seq_printf'; did you mean 'bstr_printf'? [-Werror=implicit-function-declaration] 676 | seq_printf(s, "%lx a: %i g: %i (%08x %08x %08x) %s ", | ^~~~~~~~~~ | bstr_printf cc1: some warnings being treated as errors -- drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c: In function 'npcmgpio_dbg_show': >> drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:134:9: error: implicit declaration of function 'seq_printf'; did you mean 'bstr_printf'? [-Werror=implicit-function-declaration] 134 | seq_printf(s, "-- module %d [gpio%d - %d]\n", | ^~~~~~~~~~ | bstr_printf drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c: In function 'npcmgpio_direction_input': >> drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:172:15: error: implicit declaration of function 'pinctrl_gpio_direction_input'; did you mean 'npcmgpio_direction_input'? [-Werror=implicit-function-declaration] 172 | ret = pinctrl_gpio_direction_input(offset + chip->base); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | npcmgpio_direction_input drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c: In function 'npcmgpio_direction_output': >> drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:189:15: error: implicit declaration of function 'pinctrl_gpio_direction_output'; did you mean 'npcmgpio_direction_output'? [-Werror=implicit-function-declaration] 189 | ret = pinctrl_gpio_direction_output(offset + chip->base); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | npcmgpio_direction_output drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c: In function 'npcmgpio_gpio_request': >> drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:202:15: error: implicit declaration of function 'pinctrl_gpio_request'; did you mean 'npcmgpio_gpio_request'? [-Werror=implicit-function-declaration] 202 | ret = pinctrl_gpio_request(offset + chip->base); | ^~~~~~~~~~~~~~~~~~~~ | npcmgpio_gpio_request drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c: In function 'npcmgpio_gpio_free': >> drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:212:9: error: implicit declaration of function 'pinctrl_gpio_free' [-Werror=implicit-function-declaration] 212 | pinctrl_gpio_free(offset + chip->base); | ^~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors -- drivers/pinctrl/renesas/pinctrl.c: In function 'sh_pfc_pin_dbg_show': >> drivers/pinctrl/renesas/pinctrl.c:76:9: error: implicit declaration of function 'seq_puts' [-Werror=implicit-function-declaration] 76 | seq_puts(s, DRV_NAME); | ^~~~~~~~ cc1: some warnings being treated as errors .. vim +/pinctrl_lookup_state +524 drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 444 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 445 static int configure_memdma_and_inputblock(struct c8sectpfei *fei, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 446 struct channel_info *tsin) c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 447 { c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 448 int ret; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 449 u32 tmp; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 450 char tsin_pin_name[MAX_NAME]; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 451 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 452 if (!fei || !tsin) c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 453 return -EINVAL; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 454 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 455 dev_dbg(fei->dev, "%s:%d Configuring channel=%p tsin=%d\n" c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 456 , __func__, __LINE__, tsin, tsin->tsin_id); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 457 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 458 init_completion(&tsin->idle_completion); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 459 64e46b637bbafc drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c Andy Shevchenko 2022-02-09 460 tsin->back_buffer_start = kzalloc(FEI_BUFFER_SIZE + FEI_ALIGNMENT, GFP_KERNEL); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 461 if (!tsin->back_buffer_start) { c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 462 ret = -ENOMEM; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 463 goto err_unmap; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 464 } c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 465 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 466 /* Ensure backbuffer is 32byte aligned */ 64e46b637bbafc drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c Andy Shevchenko 2022-02-09 467 tsin->back_buffer_aligned = tsin->back_buffer_start + FEI_ALIGNMENT; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 468 64e46b637bbafc drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c Andy Shevchenko 2022-02-09 469 tsin->back_buffer_aligned = PTR_ALIGN(tsin->back_buffer_aligned, FEI_ALIGNMENT); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 470 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 471 tsin->back_buffer_busaddr = dma_map_single(fei->dev, 64e46b637bbafc drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c Andy Shevchenko 2022-02-09 472 tsin->back_buffer_aligned, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 473 FEI_BUFFER_SIZE, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 474 DMA_BIDIRECTIONAL); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 475 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 476 if (dma_mapping_error(fei->dev, tsin->back_buffer_busaddr)) { c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 477 dev_err(fei->dev, "failed to map back_buffer\n"); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 478 ret = -EFAULT; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 479 goto err_unmap; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 480 } c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 481 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 482 /* c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 483 * The pid buffer can be configured (in hw) for byte or bit c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 484 * per pid. By powers of deduction we conclude stih407 family c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 485 * is configured (at SoC design stage) for bit per pid. c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 486 */ 64e46b637bbafc drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c Andy Shevchenko 2022-02-09 487 tsin->pid_buffer_start = kzalloc(PID_TABLE_SIZE + PID_TABLE_SIZE, GFP_KERNEL); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 488 if (!tsin->pid_buffer_start) { c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 489 ret = -ENOMEM; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 490 goto err_unmap; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 491 } c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 492 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 493 /* c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 494 * PID buffer needs to be aligned to size of the pid table c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 495 * which at bit per pid is 1024 bytes (8192 pids / 8). c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 496 * PIDF_BASE register enforces this alignment when writing c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 497 * the register. c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 498 */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 499 64e46b637bbafc drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c Andy Shevchenko 2022-02-09 500 tsin->pid_buffer_aligned = tsin->pid_buffer_start + PID_TABLE_SIZE; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 501 64e46b637bbafc drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c Andy Shevchenko 2022-02-09 502 tsin->pid_buffer_aligned = PTR_ALIGN(tsin->pid_buffer_aligned, PID_TABLE_SIZE); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 503 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 504 tsin->pid_buffer_busaddr = dma_map_single(fei->dev, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 505 tsin->pid_buffer_aligned, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 506 PID_TABLE_SIZE, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 507 DMA_BIDIRECTIONAL); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 508 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 509 if (dma_mapping_error(fei->dev, tsin->pid_buffer_busaddr)) { c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 510 dev_err(fei->dev, "failed to map pid_bitmap\n"); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 511 ret = -EFAULT; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 512 goto err_unmap; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 513 } c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 514 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 515 /* manage cache so pid bitmap is visible to HW */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 516 dma_sync_single_for_device(fei->dev, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 517 tsin->pid_buffer_busaddr, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 518 PID_TABLE_SIZE, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 519 DMA_TO_DEVICE); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 520 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 521 snprintf(tsin_pin_name, MAX_NAME, "tsin%d-%s", tsin->tsin_id, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 522 (tsin->serial_not_parallel ? "serial" : "parallel")); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 523 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 @524 tsin->pstate = pinctrl_lookup_state(fei->pinctrl, tsin_pin_name); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 525 if (IS_ERR(tsin->pstate)) { c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 526 dev_err(fei->dev, "%s: pinctrl_lookup_state couldn't find %s state\n" c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 527 , __func__, tsin_pin_name); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 528 ret = PTR_ERR(tsin->pstate); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 529 goto err_unmap; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 530 } c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 531 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 @532 ret = pinctrl_select_state(fei->pinctrl, tsin->pstate); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 533 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 534 if (ret) { c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 535 dev_err(fei->dev, "%s: pinctrl_select_state failed\n" c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 536 , __func__); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 537 goto err_unmap; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 538 } c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 539 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 540 /* Enable this input block */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 541 tmp = readl(fei->io + SYS_INPUT_CLKEN); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 542 tmp |= BIT(tsin->tsin_id); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 543 writel(tmp, fei->io + SYS_INPUT_CLKEN); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 544 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 545 if (tsin->serial_not_parallel) c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 546 tmp |= C8SECTPFE_SERIAL_NOT_PARALLEL; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 547 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 548 if (tsin->invert_ts_clk) c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 549 tmp |= C8SECTPFE_INVERT_TSCLK; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 550 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 551 if (tsin->async_not_sync) c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 552 tmp |= C8SECTPFE_ASYNC_NOT_SYNC; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 553 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 554 tmp |= C8SECTPFE_ALIGN_BYTE_SOP | C8SECTPFE_BYTE_ENDIANNESS_MSB; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 555 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 556 writel(tmp, fei->io + C8SECTPFE_IB_IP_FMT_CFG(tsin->tsin_id)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 557 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 558 writel(C8SECTPFE_SYNC(0x9) | c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 559 C8SECTPFE_DROP(0x9) | c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 560 C8SECTPFE_TOKEN(0x47), c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 561 fei->io + C8SECTPFE_IB_SYNCLCKDRP_CFG(tsin->tsin_id)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 562 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 563 writel(TS_PKT_SIZE, fei->io + C8SECTPFE_IB_PKT_LEN(tsin->tsin_id)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 564 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 565 /* Place the FIFO's at the end of the irec descriptors */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 566 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 567 tsin->fifo = (tsin->tsin_id * FIFO_LEN); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 568 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 569 writel(tsin->fifo, fei->io + C8SECTPFE_IB_BUFF_STRT(tsin->tsin_id)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 570 writel(tsin->fifo + FIFO_LEN - 1, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 571 fei->io + C8SECTPFE_IB_BUFF_END(tsin->tsin_id)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 572 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 573 writel(tsin->fifo, fei->io + C8SECTPFE_IB_READ_PNT(tsin->tsin_id)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 574 writel(tsin->fifo, fei->io + C8SECTPFE_IB_WRT_PNT(tsin->tsin_id)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 575 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 576 writel(tsin->pid_buffer_busaddr, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 577 fei->io + PIDF_BASE(tsin->tsin_id)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 578 ee105cac24693c drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2016-03-24 579 dev_dbg(fei->dev, "chan=%d PIDF_BASE=0x%x pid_bus_addr=%pad\n", c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 580 tsin->tsin_id, readl(fei->io + PIDF_BASE(tsin->tsin_id)), 62e5f051c110a4 drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Fabio Estevam 2015-08-18 581 &tsin->pid_buffer_busaddr); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 582 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 583 /* Configure and enable HW PID filtering */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 584 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 585 /* c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 586 * The PID value is created by assembling the first 8 bytes of c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 587 * the TS packet into a 64-bit word in big-endian format. A c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 588 * slice of that 64-bit word is taken from c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 589 * (PID_OFFSET+PID_NUM_BITS-1) to PID_OFFSET. c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 590 */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 591 tmp = (C8SECTPFE_PID_ENABLE | C8SECTPFE_PID_NUMBITS(13) c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 592 | C8SECTPFE_PID_OFFSET(40)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 593 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 594 writel(tmp, fei->io + C8SECTPFE_IB_PID_SET(tsin->tsin_id)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 595 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 596 dev_dbg(fei->dev, "chan=%d setting wp: %d, rp: %d, buf: %d-%d\n", c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 597 tsin->tsin_id, c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 598 readl(fei->io + C8SECTPFE_IB_WRT_PNT(tsin->tsin_id)), c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 599 readl(fei->io + C8SECTPFE_IB_READ_PNT(tsin->tsin_id)), c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 600 readl(fei->io + C8SECTPFE_IB_BUFF_STRT(tsin->tsin_id)), c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 601 readl(fei->io + C8SECTPFE_IB_BUFF_END(tsin->tsin_id))); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 602 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 603 /* Get base addpress of pointer record block from DMEM */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 604 tsin->irec = fei->io + DMA_MEMDMA_OFFSET + DMA_DMEM_OFFSET + c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 605 readl(fei->io + DMA_PTRREC_BASE); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 606 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 607 /* fill out pointer record data structure */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 608 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 609 /* advance pointer record block to our channel */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 610 tsin->irec += (tsin->tsin_id * DMA_PRDS_SIZE); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 611 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 612 writel(tsin->fifo, tsin->irec + DMA_PRDS_MEMBASE); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 613 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 614 writel(tsin->fifo + FIFO_LEN - 1, tsin->irec + DMA_PRDS_MEMTOP); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 615 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 616 writel((188 + 7)&~7, tsin->irec + DMA_PRDS_PKTSIZE); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 617 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 618 writel(0x1, tsin->irec + DMA_PRDS_TPENABLE); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 619 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 620 /* read/write pointers with physical bus address */ c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 621 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 622 writel(tsin->back_buffer_busaddr, tsin->irec + DMA_PRDS_BUSBASE_TP(0)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 623 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 624 tmp = tsin->back_buffer_busaddr + FEI_BUFFER_SIZE - 1; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 625 writel(tmp, tsin->irec + DMA_PRDS_BUSTOP_TP(0)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 626 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 627 writel(tsin->back_buffer_busaddr, tsin->irec + DMA_PRDS_BUSWP_TP(0)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 628 writel(tsin->back_buffer_busaddr, tsin->irec + DMA_PRDS_BUSRP_TP(0)); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 629 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 630 /* initialize tasklet */ 9db2f6a480021d drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Allen Pais 2020-08-17 631 tasklet_setup(&tsin->tsklet, channel_swdemux_tsklet); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 632 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 633 return 0; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 634 c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 635 err_unmap: c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 636 free_input_block(fei, tsin); c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 637 return ret; c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 638 } c5f5d0f99794cf drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c Peter Griffin 2015-07-30 639 -- 0-DAY CI Kernel Test Service https://01.org/lkp