Hi Steven,

I love your patch! Perhaps something to improve:

[auto build test WARNING on asoc/for-next]
[also build test WARNING on v4.17-rc7 next-20180530]
[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/Steven-Eckhoff/ASoC-TSCS454-Add-Support/20180531-001905
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git 
for-next
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> sound/soc/codecs/tscs454.c:2454:9: sparse: Using plain integer as NULL 
>> pointer
>> sound/soc/codecs/tscs454.c:2629:5: sparse: symbol 'tscs454_set_sysclk' was 
>> not declared. Should it be static?
   sound/soc/codecs/tscs454.c:236:10: sparse: Initializer entry defined twice
   sound/soc/codecs/tscs454.c:239:10:   also defined here

Please review and possibly fold the followup patch.

vim +2454 sound/soc/codecs/tscs454.c

  2348  
  2349  static struct snd_soc_dapm_widget const tscs454_dapm_widgets[] = {
  2350          /* R_PLLCTL PG 0 ADDR 0x15 */
  2351          SND_SOC_DAPM_SUPPLY("PLL 1 Power", R_PLLCTL, FB_PLLCTL_PU_PLL1, 
0,
  2352                          pll_power_event,
  2353                          SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_PRE_PMD),
  2354          SND_SOC_DAPM_SUPPLY("PLL 2 Power", R_PLLCTL, FB_PLLCTL_PU_PLL2, 
0,
  2355                          pll_power_event,
  2356                          SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_PRE_PMD),
  2357          /* R_I2SPINC0 PG 0 ADDR 0x22 */
  2358          SND_SOC_DAPM_AIF_OUT("DAI 3 Out", "DAI 3 Capture", 0,
  2359                          R_I2SPINC0, FB_I2SPINC0_SDO3TRI, 1),
  2360          SND_SOC_DAPM_AIF_OUT("DAI 2 Out", "DAI 2 Capture", 0,
  2361                          R_I2SPINC0, FB_I2SPINC0_SDO2TRI, 1),
  2362          SND_SOC_DAPM_AIF_OUT("DAI 1 Out", "DAI 1 Capture", 0,
  2363                          R_I2SPINC0, FB_I2SPINC0_SDO1TRI, 1),
  2364          /* R_PWRM0 PG 0 ADDR 0x33 */
  2365          SND_SOC_DAPM_ADC("Input Processor Channel 3", NULL,
  2366                          R_PWRM0, FB_PWRM0_INPROC3PU, 0),
  2367          SND_SOC_DAPM_ADC("Input Processor Channel 2", NULL,
  2368                          R_PWRM0, FB_PWRM0_INPROC2PU, 0),
  2369          SND_SOC_DAPM_ADC("Input Processor Channel 1", NULL,
  2370                          R_PWRM0, FB_PWRM0_INPROC1PU, 0),
  2371          SND_SOC_DAPM_ADC("Input Processor Channel 0", NULL,
  2372                          R_PWRM0, FB_PWRM0_INPROC0PU, 0),
  2373          SND_SOC_DAPM_SUPPLY("Mic Bias 2",
  2374                          R_PWRM0, FB_PWRM0_MICB2PU, 0, NULL, 0),
  2375          SND_SOC_DAPM_SUPPLY("Mic Bias 1", R_PWRM0,
  2376                          FB_PWRM0_MICB1PU, 0, NULL, 0),
  2377          /* R_PWRM1 PG 0 ADDR 0x34 */
  2378          SND_SOC_DAPM_SUPPLY("Sub Power", R_PWRM1, FB_PWRM1_SUBPU, 0, 
NULL, 0),
  2379          SND_SOC_DAPM_SUPPLY("Headphone Left Power",
  2380                          R_PWRM1, FB_PWRM1_HPLPU, 0, NULL, 0),
  2381          SND_SOC_DAPM_SUPPLY("Headphone Right Power",
  2382                          R_PWRM1, FB_PWRM1_HPRPU, 0, NULL, 0),
  2383          SND_SOC_DAPM_SUPPLY("Speaker Left Power",
  2384                          R_PWRM1, FB_PWRM1_SPKLPU, 0, NULL, 0),
  2385          SND_SOC_DAPM_SUPPLY("Speaker Right Power",
  2386                          R_PWRM1, FB_PWRM1_SPKRPU, 0, NULL, 0),
  2387          SND_SOC_DAPM_SUPPLY("Differential Input 2 Power",
  2388                          R_PWRM1, FB_PWRM1_D2S2PU, 0, NULL, 0),
  2389          SND_SOC_DAPM_SUPPLY("Differential Input 1 Power",
  2390                          R_PWRM1, FB_PWRM1_D2S1PU, 0, NULL, 0),
  2391          /* R_PWRM2 PG 0 ADDR 0x35 */
  2392          SND_SOC_DAPM_SUPPLY("DAI 3 Out Power",
  2393                          R_PWRM2, FB_PWRM2_I2S3OPU, 0, NULL, 0),
  2394          SND_SOC_DAPM_SUPPLY("DAI 2 Out Power",
  2395                          R_PWRM2, FB_PWRM2_I2S2OPU, 0, NULL, 0),
  2396          SND_SOC_DAPM_SUPPLY("DAI 1 Out Power",
  2397                          R_PWRM2, FB_PWRM2_I2S1OPU, 0, NULL, 0),
  2398          SND_SOC_DAPM_SUPPLY("DAI 3 In Power",
  2399                          R_PWRM2, FB_PWRM2_I2S3IPU, 0, NULL, 0),
  2400          SND_SOC_DAPM_SUPPLY("DAI 2 In Power",
  2401                          R_PWRM2, FB_PWRM2_I2S2IPU, 0, NULL, 0),
  2402          SND_SOC_DAPM_SUPPLY("DAI 1 In Power",
  2403                          R_PWRM2, FB_PWRM2_I2S1IPU, 0, NULL, 0),
  2404          /* R_PWRM3 PG 0 ADDR 0x36 */
  2405          SND_SOC_DAPM_SUPPLY("Line Out Left Power",
  2406                          R_PWRM3, FB_PWRM3_LLINEPU, 0, NULL, 0),
  2407          SND_SOC_DAPM_SUPPLY("Line Out Right Power",
  2408                          R_PWRM3, FB_PWRM3_RLINEPU, 0, NULL, 0),
  2409          /* R_PWRM4 PG 0 ADDR 0x37 */
  2410          SND_SOC_DAPM_DAC("Sub", NULL, R_PWRM4, FB_PWRM4_OPSUBPU, 0),
  2411          SND_SOC_DAPM_DAC("DAC Left", NULL, R_PWRM4, FB_PWRM4_OPDACLPU, 
0),
  2412          SND_SOC_DAPM_DAC("DAC Right", NULL, R_PWRM4, FB_PWRM4_OPDACRPU, 
0),
  2413          SND_SOC_DAPM_DAC("ClassD Left", NULL, R_PWRM4, 
FB_PWRM4_OPSPKLPU, 0),
  2414          SND_SOC_DAPM_DAC("ClassD Right", NULL, R_PWRM4, 
FB_PWRM4_OPSPKRPU, 0),
  2415          /* R_AUDIOMUX1  PG 0 ADDR 0x3A */
  2416          SND_SOC_DAPM_MUX("DAI 2 Out Mux", SND_SOC_NOPM, 0, 0,
  2417                          &dai2_mux_dapm_enum),
  2418          SND_SOC_DAPM_MUX("DAI 1 Out Mux", SND_SOC_NOPM, 0, 0,
  2419                          &dai1_mux_dapm_enum),
  2420          /* R_AUDIOMUX2 PG 0 ADDR 0x3B */
  2421          SND_SOC_DAPM_MUX("DAC Mux", SND_SOC_NOPM, 0, 0,
  2422                          &dac_mux_dapm_enum),
  2423          SND_SOC_DAPM_MUX("DAI 3 Out Mux", SND_SOC_NOPM, 0, 0,
  2424                          &dai3_mux_dapm_enum),
  2425          /* R_AUDIOMUX3 PG 0 ADDR 0x3C */
  2426          SND_SOC_DAPM_MUX("Sub Mux", SND_SOC_NOPM, 0, 0,
  2427                          &sub_mux_dapm_enum),
  2428          SND_SOC_DAPM_MUX("Speaker Mux", SND_SOC_NOPM, 0, 0,
  2429                          &classd_mux_dapm_enum),
  2430          /* R_HSDCTL1 PG 1 ADDR 0x01 */
  2431          SND_SOC_DAPM_SUPPLY("GHS Detect Power", R_HSDCTL1,
  2432                          FB_HSDCTL1_CON_DET_PWD, 1, NULL, 0),
  2433          /* R_CH0AIC PG 1 ADDR 0x06 */
  2434          SND_SOC_DAPM_MUX("Input Boost Channel 0 Mux", SND_SOC_NOPM, 0, 
0,
  2435                          &in_bst_mux_ch0_dapm_enum),
  2436          SND_SOC_DAPM_MUX("ADC Channel 0 Mux", SND_SOC_NOPM, 0, 0,
  2437                          &adc_mux_ch0_dapm_enum),
  2438          SND_SOC_DAPM_MUX("Input Processor Channel 0 Mux", SND_SOC_NOPM, 
0, 0,
  2439                          &in_proc_mux_ch0_dapm_enum),
  2440          /* R_CH1AIC PG 1 ADDR 0x07 */
  2441          SND_SOC_DAPM_MUX("Input Boost Channel 1 Mux", SND_SOC_NOPM, 0, 
0,
  2442                          &in_bst_mux_ch1_dapm_enum),
  2443          SND_SOC_DAPM_MUX("ADC Channel 1 Mux", SND_SOC_NOPM, 0, 0,
  2444                          &adc_mux_ch1_dapm_enum),
  2445          SND_SOC_DAPM_MUX("Input Processor Channel 1 Mux", SND_SOC_NOPM, 
0, 0,
  2446                          &in_proc_mux_ch1_dapm_enum),
  2447          /* Virtual */
  2448          SND_SOC_DAPM_AIF_IN("DAI 3 In", "DAI 3 Playback", 0,
  2449                          SND_SOC_NOPM, 0, 0),
  2450          SND_SOC_DAPM_AIF_IN("DAI 2 In", "DAI 2 Playback", 0,
  2451                          SND_SOC_NOPM, 0, 0),
  2452          SND_SOC_DAPM_AIF_IN("DAI 1 In", "DAI 1 Playback", 0,
  2453                          SND_SOC_NOPM, 0, 0),
> 2454          SND_SOC_DAPM_SUPPLY("PLLs", SND_SOC_NOPM, 0, 0, 0, 0),
  2455          SND_SOC_DAPM_OUTPUT("Sub Out"),
  2456          SND_SOC_DAPM_OUTPUT("Headphone Left"),
  2457          SND_SOC_DAPM_OUTPUT("Headphone Right"),
  2458          SND_SOC_DAPM_OUTPUT("Speaker Left"),
  2459          SND_SOC_DAPM_OUTPUT("Speaker Right"),
  2460          SND_SOC_DAPM_OUTPUT("Line Out Left"),
  2461          SND_SOC_DAPM_OUTPUT("Line Out Right"),
  2462          SND_SOC_DAPM_INPUT("D2S 2"),
  2463          SND_SOC_DAPM_INPUT("D2S 1"),
  2464          SND_SOC_DAPM_INPUT("Line In 1 Left"),
  2465          SND_SOC_DAPM_INPUT("Line In 1 Right"),
  2466          SND_SOC_DAPM_INPUT("Line In 2 Left"),
  2467          SND_SOC_DAPM_INPUT("Line In 2 Right"),
  2468          SND_SOC_DAPM_INPUT("Line In 3 Left"),
  2469          SND_SOC_DAPM_INPUT("Line In 3 Right"),
  2470          SND_SOC_DAPM_INPUT("DMic 1"),
  2471          SND_SOC_DAPM_INPUT("DMic 2"),
  2472  
  2473          SND_SOC_DAPM_MUX("CH 0_1 Mux", SND_SOC_NOPM, 0, 0,
  2474                          &ch_0_1_mux_dapm_enum),
  2475          SND_SOC_DAPM_MUX("CH 2_3 Mux", SND_SOC_NOPM, 0, 0,
  2476                          &ch_2_3_mux_dapm_enum),
  2477          SND_SOC_DAPM_MUX("CH 4_5 Mux", SND_SOC_NOPM, 0, 0,
  2478                          &ch_4_5_mux_dapm_enum),
  2479  };
  2480  
  2481  static struct snd_soc_dapm_route const tscs454_intercon[] = {
  2482          /* PLLs */
  2483          {"PLLs", NULL, "PLL 1 Power", pll_connected},
  2484          {"PLLs", NULL, "PLL 2 Power", pll_connected},
  2485          /* Inputs */
  2486          {"DAI 3 In", NULL, "DAI 3 In Power"},
  2487          {"DAI 2 In", NULL, "DAI 2 In Power"},
  2488          {"DAI 1 In", NULL, "DAI 1 In Power"},
  2489          /* Outputs */
  2490          {"DAI 3 Out", NULL, "DAI 3 Out Power"},
  2491          {"DAI 2 Out", NULL, "DAI 2 Out Power"},
  2492          {"DAI 1 Out", NULL, "DAI 1 Out Power"},
  2493          /* Ch Muxing */
  2494          {"CH 0_1 Mux", "DAI 1", "DAI 1 In"},
  2495          {"CH 0_1 Mux", "TDM 0_1", "DAI 1 In"},
  2496          {"CH 2_3 Mux", "DAI 2", "DAI 2 In"},
  2497          {"CH 2_3 Mux", "TDM 2_3", "DAI 1 In"},
  2498          {"CH 4_5 Mux", "DAI 3", "DAI 2 In"},
  2499          {"CH 4_5 Mux", "TDM 4_5", "DAI 1 In"},
  2500          /* In/Out Muxing */
  2501          {"DAI 1 Out Mux", "CH 0_1", "CH 0_1 Mux"},
  2502          {"DAI 1 Out Mux", "CH 2_3", "CH 2_3 Mux"},
  2503          {"DAI 1 Out Mux", "CH 4_5", "CH 4_5 Mux"},
  2504          {"DAI 2 Out Mux", "CH 0_1", "CH 0_1 Mux"},
  2505          {"DAI 2 Out Mux", "CH 2_3", "CH 2_3 Mux"},
  2506          {"DAI 2 Out Mux", "CH 4_5", "CH 4_5 Mux"},
  2507          {"DAI 3 Out Mux", "CH 0_1", "CH 0_1 Mux"},
  2508          {"DAI 3 Out Mux", "CH 2_3", "CH 2_3 Mux"},
  2509          {"DAI 3 Out Mux", "CH 4_5", "CH 4_5 Mux"},
  2510          /******************
  2511           * Playback Paths *
  2512           ******************/
  2513          /* DAC Path */
  2514          {"DAC Mux", "CH 4_5", "CH 4_5 Mux"},
  2515          {"DAC Mux", "CH 2_3", "CH 2_3 Mux"},
  2516          {"DAC Mux", "CH 0_1", "CH 0_1 Mux"},
  2517          {"DAC Left", NULL, "DAC Mux"},
  2518          {"DAC Right", NULL, "DAC Mux"},
  2519          {"DAC Left", NULL, "PLLs"},
  2520          {"DAC Right", NULL, "PLLs"},
  2521          {"Headphone Left", NULL, "Headphone Left Power"},
  2522          {"Headphone Right", NULL, "Headphone Right Power"},
  2523          {"Headphone Left", NULL, "DAC Left"},
  2524          {"Headphone Right", NULL, "DAC Right"},
  2525          /* Line Out */
  2526          {"Line Out Left", NULL, "Line Out Left Power"},
  2527          {"Line Out Right", NULL, "Line Out Right Power"},
  2528          {"Line Out Left", NULL, "DAC Left"},
  2529          {"Line Out Right", NULL, "DAC Right"},
  2530          /* ClassD Path */
  2531          {"Speaker Mux", "CH 4_5", "CH 4_5 Mux"},
  2532          {"Speaker Mux", "CH 2_3", "CH 2_3 Mux"},
  2533          {"Speaker Mux", "CH 0_1", "CH 0_1 Mux"},
  2534          {"ClassD Left", NULL, "Speaker Mux"},
  2535          {"ClassD Right", NULL, "Speaker Mux"},
  2536          {"ClassD Left", NULL, "PLLs"},
  2537          {"ClassD Right", NULL, "PLLs"},
  2538          {"Speaker Left", NULL, "Speaker Left Power"},
  2539          {"Speaker Right", NULL, "Speaker Right Power"},
  2540          {"Speaker Left", NULL, "ClassD Left"},
  2541          {"Speaker Right", NULL, "ClassD Right"},
  2542          /* Sub Path */
  2543          {"Sub Mux", "CH 4", "CH 4_5 Mux"},
  2544          {"Sub Mux", "CH 5", "CH 4_5 Mux"},
  2545          {"Sub Mux", "CH 4 + 5", "CH 4_5 Mux"},
  2546          {"Sub Mux", "CH 2", "CH 2_3 Mux"},
  2547          {"Sub Mux", "CH 3", "CH 2_3 Mux"},
  2548          {"Sub Mux", "CH 2 + 3", "CH 2_3 Mux"},
  2549          {"Sub Mux", "CH 0", "CH 0_1 Mux"},
  2550          {"Sub Mux", "CH 1", "CH 0_1 Mux"},
  2551          {"Sub Mux", "CH 0 + 1", "CH 0_1 Mux"},
  2552          {"Sub Mux", "ADC/DMic 1 Left", "Input Processor Channel 0"},
  2553          {"Sub Mux", "ADC/DMic 1 Right", "Input Processor Channel 1"},
  2554          {"Sub Mux", "ADC/DMic 1 Left Plus Right", "Input Processor 
Channel 0"},
  2555          {"Sub Mux", "ADC/DMic 1 Left Plus Right", "Input Processor 
Channel 1"},
  2556          {"Sub Mux", "DMic 2 Left", "DMic 2"},
  2557          {"Sub Mux", "DMic 2 Right", "DMic 2"},
  2558          {"Sub Mux", "DMic 2 Left Plus Right", "DMic 2"},
  2559          {"Sub Mux", "ClassD Left", "ClassD Left"},
  2560          {"Sub Mux", "ClassD Right", "ClassD Right"},
  2561          {"Sub Mux", "ClassD Left Plus Right", "ClassD Left"},
  2562          {"Sub Mux", "ClassD Left Plus Right", "ClassD Right"},
  2563          {"Sub", NULL, "Sub Mux"},
  2564          {"Sub", NULL, "PLLs"},
  2565          {"Sub Out", NULL, "Sub Power"},
  2566          {"Sub Out", NULL, "Sub"},
  2567          /*****************
  2568           * Capture Paths *
  2569           *****************/
  2570          {"Input Boost Channel 0 Mux", "Input 3", "Line In 3 Left"},
  2571          {"Input Boost Channel 0 Mux", "Input 2", "Line In 2 Left"},
  2572          {"Input Boost Channel 0 Mux", "Input 1", "Line In 1 Left"},
  2573          {"Input Boost Channel 0 Mux", "D2S", "D2S 1"},
  2574  
  2575          {"Input Boost Channel 1 Mux", "Input 3", "Line In 3 Right"},
  2576          {"Input Boost Channel 1 Mux", "Input 2", "Line In 2 Right"},
  2577          {"Input Boost Channel 1 Mux", "Input 1", "Line In 1 Right"},
  2578          {"Input Boost Channel 1 Mux", "D2S", "D2S 2"},
  2579  
  2580          {"ADC Channel 0 Mux", "Input 3 Boost Bypass", "Line In 3 Left"},
  2581          {"ADC Channel 0 Mux", "Input 2 Boost Bypass", "Line In 2 Left"},
  2582          {"ADC Channel 0 Mux", "Input 1 Boost Bypass", "Line In 1 Left"},
  2583          {"ADC Channel 0 Mux", "Input Boost", "Input Boost Channel 0 
Mux"},
  2584  
  2585          {"ADC Channel 1 Mux", "Input 3 Boost Bypass", "Line In 3 
Right"},
  2586          {"ADC Channel 1 Mux", "Input 2 Boost Bypass", "Line In 2 
Right"},
  2587          {"ADC Channel 1 Mux", "Input 1 Boost Bypass", "Line In 1 
Right"},
  2588          {"ADC Channel 1 Mux", "Input Boost", "Input Boost Channel 1 
Mux"},
  2589  
  2590          {"Input Processor Channel 0 Mux", "ADC", "ADC Channel 0 Mux"},
  2591          {"Input Processor Channel 0 Mux", "DMic", "DMic 1"},
  2592  
  2593          {"Input Processor Channel 0", NULL, "PLLs"},
  2594          {"Input Processor Channel 0", NULL, "Input Processor Channel 0 
Mux"},
  2595  
  2596          {"Input Processor Channel 1 Mux", "ADC", "ADC Channel 1 Mux"},
  2597          {"Input Processor Channel 1 Mux", "DMic", "DMic 1"},
  2598  
  2599          {"Input Processor Channel 1", NULL, "PLLs"},
  2600          {"Input Processor Channel 1", NULL, "Input Processor Channel 1 
Mux"},
  2601  
  2602          {"Input Processor Channel 2", NULL, "PLLs"},
  2603          {"Input Processor Channel 2", NULL, "DMic 2"},
  2604  
  2605          {"Input Processor Channel 3", NULL, "PLLs"},
  2606          {"Input Processor Channel 3", NULL, "DMic 2"},
  2607  
  2608          {"DAI 1 Out Mux", "ADC/DMic 1", "Input Processor Channel 0"},
  2609          {"DAI 1 Out Mux", "ADC/DMic 1", "Input Processor Channel 1"},
  2610          {"DAI 1 Out Mux", "DMic 2", "Input Processor Channel 2"},
  2611          {"DAI 1 Out Mux", "DMic 2", "Input Processor Channel 3"},
  2612  
  2613          {"DAI 2 Out Mux", "ADC/DMic 1", "Input Processor Channel 0"},
  2614          {"DAI 2 Out Mux", "ADC/DMic 1", "Input Processor Channel 1"},
  2615          {"DAI 2 Out Mux", "DMic 2", "Input Processor Channel 2"},
  2616          {"DAI 2 Out Mux", "DMic 2", "Input Processor Channel 3"},
  2617  
  2618          {"DAI 3 Out Mux", "ADC/DMic 1", "Input Processor Channel 0"},
  2619          {"DAI 3 Out Mux", "ADC/DMic 1", "Input Processor Channel 1"},
  2620          {"DAI 3 Out Mux", "DMic 2", "Input Processor Channel 2"},
  2621          {"DAI 3 Out Mux", "DMic 2", "Input Processor Channel 3"},
  2622  
  2623          {"DAI 1 Out", NULL, "DAI 1 Out Mux"},
  2624          {"DAI 2 Out", NULL, "DAI 2 Out Mux"},
  2625          {"DAI 3 Out", NULL, "DAI 3 Out Mux"},
  2626  };
  2627  
  2628  /* This is used when BCLK is sourcing the PLLs */
> 2629  int tscs454_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned 
> int freq,
  2630                  int dir)
  2631  {
  2632          struct snd_soc_component *component = dai->component;
  2633          struct tscs454 *tscs454 = 
snd_soc_component_get_drvdata(component);
  2634          unsigned int val;
  2635          int bclk_dai;
  2636          int ret;
  2637  
  2638          dev_dbg(component->dev, "%s(): freq = %u\n", __func__, freq);
  2639  
  2640          ret = snd_soc_component_read(component, R_PLLCTL, &val);
  2641          if (ret < 0)
  2642                  return ret;
  2643  
  2644          bclk_dai = (val & FM_PLLCTL_BCLKSEL) >> FB_PLLCTL_BCLKSEL;
  2645          if (bclk_dai != dai->id)
  2646                  return 0;
  2647  
  2648          tscs454->bclk_freq = freq;
  2649          return set_sysclk(component);
  2650  }
  2651  

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

Reply via email to