Re: [PATCH 4/7] thermal: mediatek: add thermal controller offset

kbuild test robot
2019-02-04T13:17:12Z

[-- Attachment #1: Type: text/plain, Size: 16807 bytes --]

Hi Michael,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on soc-thermal/next]
[also build test WARNING on v5.0-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/michael-kao-mediatek-com/Add-Mediatek-thermal-dirver-for-mt8183/20190204-131145
base: https://git.kernel.org/pub/scm/linux/kernel/git/evalenti/linux-soc-thermal.git next
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

All warnings (new ones prefixed by >>):

>> drivers/thermal/mtk_thermal.c:558:50: sparse: warning: incorrect type in initializer (different address spaces)
drivers/thermal/mtk_thermal.c:558:50: sparse: expected void *controller_base
drivers/thermal/mtk_thermal.c:558:50: sparse: got void [noderef] <asn:2> *
>> drivers/thermal/mtk_thermal.c:566:62: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:566:62: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:566:62: sparse: got void *
drivers/thermal/mtk_thermal.c:574:41: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:574:41: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:574:41: sparse: got void *
drivers/thermal/mtk_thermal.c:578:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:578:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:578:32: sparse: got void *
drivers/thermal/mtk_thermal.c:581:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:581:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:581:37: sparse: got void *
drivers/thermal/mtk_thermal.c:584:44: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:584:44: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:584:44: sparse: got void *
drivers/thermal/mtk_thermal.c:587:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:587:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:587:37: sparse: got void *
drivers/thermal/mtk_thermal.c:588:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:588:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:588:37: sparse: got void *
drivers/thermal/mtk_thermal.c:603:59: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:603:59: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:603:59: sparse: got void *
drivers/thermal/mtk_thermal.c:607:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:607:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:607:32: sparse: got void *
drivers/thermal/mtk_thermal.c:611:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:611:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:611:32: sparse: got void *
drivers/thermal/mtk_thermal.c:614:59: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:614:59: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:614:59: sparse: got void *
drivers/thermal/mtk_thermal.c:618:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:618:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:618:32: sparse: got void *
drivers/thermal/mtk_thermal.c:622:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:622:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:622:32: sparse: got void *
drivers/thermal/mtk_thermal.c:626:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:626:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:626:32: sparse: got void *
drivers/thermal/mtk_thermal.c:629:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:629:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:629:37: sparse: got void *
drivers/thermal/mtk_thermal.c:633:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:633:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:633:32: sparse: got void *
drivers/thermal/mtk_thermal.c:636:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:636:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:636:37: sparse: got void *
drivers/thermal/mtk_thermal.c:640:33: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:640:33: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:640:33: sparse: got void *
drivers/thermal/mtk_thermal.c:648:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:648:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:648:32: sparse: got void *
drivers/thermal/mtk_thermal.c:652:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:652:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:652:32: sparse: got void *

sparse warnings: (new ones prefixed by >>)

drivers/thermal/mtk_thermal.c:558:50: sparse: warning: incorrect type in initializer (different address spaces)
>> drivers/thermal/mtk_thermal.c:558:50: sparse: expected void *controller_base
>> drivers/thermal/mtk_thermal.c:558:50: sparse: got void [noderef] <asn:2> *
drivers/thermal/mtk_thermal.c:566:62: sparse: warning: incorrect type in argument 2 (different address spaces)
>> drivers/thermal/mtk_thermal.c:566:62: sparse: expected void volatile [noderef] <asn:2> *addr
>> drivers/thermal/mtk_thermal.c:566:62: sparse: got void *
drivers/thermal/mtk_thermal.c:574:41: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:574:41: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:574:41: sparse: got void *
drivers/thermal/mtk_thermal.c:578:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:578:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:578:32: sparse: got void *
drivers/thermal/mtk_thermal.c:581:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:581:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:581:37: sparse: got void *
drivers/thermal/mtk_thermal.c:584:44: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:584:44: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:584:44: sparse: got void *
drivers/thermal/mtk_thermal.c:587:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:587:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:587:37: sparse: got void *
drivers/thermal/mtk_thermal.c:588:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:588:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:588:37: sparse: got void *
drivers/thermal/mtk_thermal.c:603:59: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:603:59: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:603:59: sparse: got void *
drivers/thermal/mtk_thermal.c:607:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:607:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:607:32: sparse: got void *
drivers/thermal/mtk_thermal.c:611:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:611:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:611:32: sparse: got void *
drivers/thermal/mtk_thermal.c:614:59: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:614:59: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:614:59: sparse: got void *
drivers/thermal/mtk_thermal.c:618:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:618:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:618:32: sparse: got void *
drivers/thermal/mtk_thermal.c:622:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:622:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:622:32: sparse: got void *
drivers/thermal/mtk_thermal.c:626:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:626:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:626:32: sparse: got void *
drivers/thermal/mtk_thermal.c:629:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:629:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:629:37: sparse: got void *
drivers/thermal/mtk_thermal.c:633:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:633:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:633:32: sparse: got void *
drivers/thermal/mtk_thermal.c:636:37: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:636:37: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:636:37: sparse: got void *
drivers/thermal/mtk_thermal.c:640:33: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:640:33: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:640:33: sparse: got void *
drivers/thermal/mtk_thermal.c:648:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:648:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:648:32: sparse: got void *
drivers/thermal/mtk_thermal.c:652:32: sparse: warning: incorrect type in argument 2 (different address spaces)
drivers/thermal/mtk_thermal.c:652:32: sparse: expected void volatile [noderef] <asn:2> *addr
drivers/thermal/mtk_thermal.c:652:32: sparse: got void *

vim +558 drivers/thermal/mtk_thermal.c

548
549 static void mtk_thermal_init_bank(struct mtk_thermal *mt, int num,
550 u32 apmixed_phys_base, u32 auxadc_phys_base,
551 int ctrl_id)
552 {
553 struct mtk_thermal_bank *bank = &mt->banks[num];
554 const struct mtk_thermal_data *conf = mt->conf;
555 int i;
556
557 int offset = mt->conf->controller_offset[ctrl_id];
> 558 void *controller_base = mt->thermal_base + offset;
559
560 bank->id = num;
561 bank->mt = mt;
562
563 mtk_thermal_get_bank(bank);
564
565 /* bus clock 66M counting unit is 12 * 15.15ns * 256 = 46.540us */
> 566 writel(TEMP_MONCTL1_PERIOD_UNIT(12), controller_base + TEMP_MONCTL1);
567
568 /*
569 * filt interval is 1 * 46.540us = 46.54us,
570 * sen interval is 429 * 46.540us = 19.96ms
571 */
572 writel(TEMP_MONCTL2_FILTER_INTERVAL(1) |
573 TEMP_MONCTL2_SENSOR_INTERVAL(429),
574 controller_base + TEMP_MONCTL2);
575
576 /* poll is set to 10u */
577 writel(TEMP_AHBPOLL_ADC_POLL_INTERVAL(768),
578 controller_base + TEMP_AHBPOLL);
579
580 /* temperature sampling control, 1 sample */
581 writel(0x0, controller_base + TEMP_MSRCTL0);
582
583 /* exceed this polling time, IRQ would be inserted */
584 writel(0xffffffff, controller_base + TEMP_AHBTO);
585
586 /* number of interrupts per event, 1 is enough */
587 writel(0x0, controller_base + TEMP_MONIDET0);
588 writel(0x0, controller_base + TEMP_MONIDET1);
589
590 /*
591 * The MT8173 thermal controller does not have its own ADC. Instead it
592 * uses AHB bus accesses to control the AUXADC. To do this the thermal
593 * controller has to be programmed with the physical addresses of the
594 * AUXADC registers and with the various bit positions in the AUXADC.
595 * Also the thermal controller controls a mux in the APMIXEDSYS register
596 * space.
597 */
598
599 /*
600 * this value will be stored to TEMP_PNPMUXADDR (TEMP_SPARE0)
601 * automatically by hw
602 */
603 writel(BIT(conf->auxadc_channel), controller_base + TEMP_ADCMUX);
604
605 /* AHB address for auxadc mux selection */
606 writel(auxadc_phys_base + AUXADC_CON1_CLR_V,
607 controller_base + TEMP_ADCMUXADDR);
608
609 /* AHB address for pnp sensor mux selection */
610 writel(apmixed_phys_base + APMIXED_SYS_TS_CON1,
611 controller_base + TEMP_PNPMUXADDR);
612
613 /* AHB value for auxadc enable */
614 writel(BIT(conf->auxadc_channel), controller_base + TEMP_ADCEN);
615
616 /* AHB address for auxadc enable (channel 0 immediate mode selected) */
617 writel(auxadc_phys_base + AUXADC_CON1_SET_V,
618 controller_base + TEMP_ADCENADDR);
619
620 /* AHB address for auxadc valid bit */
621 writel(auxadc_phys_base + AUXADC_DATA(conf->auxadc_channel),
622 controller_base + TEMP_ADCVALIDADDR);
623
624 /* AHB address for auxadc voltage output */
625 writel(auxadc_phys_base + AUXADC_DATA(conf->auxadc_channel),
626 controller_base + TEMP_ADCVOLTADDR);
627
628 /* read valid & voltage are at the same register */
629 writel(0x0, controller_base + TEMP_RDCTRL);
630
631 /* indicate where the valid bit is */
632 writel(TEMP_ADCVALIDMASK_VALID_HIGH | TEMP_ADCVALIDMASK_VALID_POS(12),
633 controller_base + TEMP_ADCVALIDMASK);
634
635 /* no shift */
636 writel(0x0, controller_base + TEMP_ADCVOLTAGESHIFT);
637
638 /* enable auxadc mux write transaction */
639 writel(TEMP_ADCWRITECTRL_ADC_MUX_WRITE,
640 controller_base + TEMP_ADCWRITECTRL);
641
642 for (i = 0; i < conf->bank_data[num].num_sensors; i++)
643 writel(conf->sensor_mux_values[conf->bank_data[num].sensors[i]],
644 mt->thermal_base +
645 conf->adcpnp[conf->bank_data[num].sensors[i]]);
646
647 writel((1 << conf->bank_data[num].num_sensors) - 1,
648 controller_base + TEMP_MONCTL0);
649
650 writel(TEMP_ADCWRITECTRL_ADC_PNP_WRITE |
651 TEMP_ADCWRITECTRL_ADC_MUX_WRITE,
652 controller_base + TEMP_ADCWRITECTRL);
653
654 mtk_thermal_put_bank(bank);
655 }
656

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 66607 bytes --]