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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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: .config.gz
Description: application/gzip


[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux