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

Reply via email to