recommended option
 
 config SND_SOC_INTEL_SKYLAKE
-       tristate "SKL/BXT/KBL/GLK/CNL... Platforms"
+       tristate "All Skylake/SST Platforms"
        depends on PCI && ACPI
-       select SND_SOC_INTEL_SKYLAKE_COMMON
+       select SND_SOC_INTEL_SKL
+       select SND_SOC_INTEL_APL
+       select SND_SOC_INTEL_KBL
+       select SND_SOC_INTEL_GLK
+       select SND_SOC_INTEL_CNL
+       select SND_SOC_INTEL_CFL
        help
-         If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/
-         GeminiLake or CannonLake platform with the DSP enabled in the BIOS
-         then enable this option by saying Y or m.
+          This is a backwards-compatible option to select all devices
+         supported by the Intel SST/Skylake driver. This option is no
+         longer recommended and will be deprecated when the SOF
+         driver is introduced.  Distributions should explicitly
+         select which platform uses this driver.
+
+config SND_SOC_INTEL_SKL
+       tristate "Skylake Platforms"
+       depends on PCI && ACPI
+       select SND_SOC_INTEL_SKYLAKE_FAMILY
+       help
+         If you have a Intel Skylake platform with the DSP enabled
+         in the BIOS then enable this option by saying Y or m.
+
+config SND_SOC_INTEL_APL
+       tristate "Broxton/ApolloLake Platforms"
+       depends on PCI && ACPI
+       select SND_SOC_INTEL_SKYLAKE_FAMILY
+       help
+         If you have a Intel Broxton/ApolloLake platform with the DSP
+         enabled in the BIOS then enable this option by saying Y or m.
+
+config SND_SOC_INTEL_KBL
+       tristate "Kabylake Platforms"
+       depends on PCI && ACPI
+       select SND_SOC_INTEL_SKYLAKE_FAMILY
+       help
+         If you have a Intel Kabylake platform with the DSP
+         enabled in the BIOS then enable this option by saying Y or m.
+
+config SND_SOC_INTEL_GLK
+       tristate "GeminiLake Platforms"
+       depends on PCI && ACPI
+       select SND_SOC_INTEL_SKYLAKE_FAMILY
+       help
+         If you have a Intel GeminiLake platform with the DSP
+         enabled in the BIOS then enable this option by saying Y or m.
+
+config SND_SOC_INTEL_CNL
+       tristate "CannonLake/WhiskyLake Platforms"
+       depends on PCI && ACPI
+       select SND_SOC_INTEL_SKYLAKE_FAMILY
+       help
+         If you have a Intel CNL/WHL platform with the DSP
+         enabled in the BIOS then enable this option by saying Y or m.
+
+config SND_SOC_INTEL_CFL
+       tristate "CoffeeLake Platforms"
+       depends on PCI && ACPI
+       select SND_SOC_INTEL_SKYLAKE_FAMILY
+       help
+         If you have a Intel CoffeeLake platform with the DSP
+         enabled in the BIOS then enable this option by saying Y or m.
+
+config SND_SOC_INTEL_SKYLAKE_FAMILY
+       tristate
+       select SND_SOC_INTEL_SKYLAKE_COMMON
 
-if  SND_SOC_INTEL_SKYLAKE
+if SND_SOC_INTEL_SKYLAKE_FAMILY
 
 config SND_SOC_INTEL_SKYLAKE_SSP_CLK
        tristate
          GeminiLake or CannonLake platform with the DSP enabled in the BIOS
          then enable this option by saying Y or m.
 
-endif ## SND_SOC_INTEL_SKYLAKE
+endif ## SND_SOC_INTEL_SKYLAKE_FAMILY
 
 config SND_SOC_ACPI_INTEL_MATCH
        tristate
 
 
 endif ## SND_SST_ATOM_HIFI2_PLATFORM
 
-if SND_SOC_INTEL_SKYLAKE
+if SND_SOC_INTEL_SKL
 
 config SND_SOC_INTEL_SKL_RT286_MACH
        tristate "SKL with RT286 I2S mode"
          Say Y or m if you have such a device. This is a recommended option.
          If unsure select "N".
 
+endif ## SND_SOC_INTEL_SKL
+
+if SND_SOC_INTEL_APL
+
 config SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH
        tristate "Broxton with DA7219 and MAX98357A in I2S Mode"
        depends on MFD_INTEL_LPSS && I2C && ACPI
           Say Y or m if you have such a device. This is a recommended option.
           If unsure select "N".
 
+endif ## SND_SOC_INTEL_APL
+
+if SND_SOC_INTEL_KBL
+
 config SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH
        tristate "KBL with RT5663 and MAX98927 in I2S Mode"
        depends on MFD_INTEL_LPSS && I2C && ACPI
          create an alsa sound card for RT5660 I2S audio codec.
          Say Y if you have such a device.
 
+endif ## SND_SOC_INTEL_KBL
+
+if SND_SOC_INTEL_GLK
+
 config SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH
        tristate "GLK with RT5682 and MAX98357A in I2S Mode"
        depends on MFD_INTEL_LPSS && I2C && ACPI
           Say Y if you have such a device.
           If unsure select "N".
 
-endif ## SND_SOC_INTEL_SKYLAKE
+endif ## SND_SOC_INTEL_GLK
 
 if SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC
 
 
 
 /* PCI IDs */
 static const struct pci_device_id skl_ids[] = {
+#if IS_ENABLED(CONFIG_SND_SOC_INTEL_SKL)
        /* Sunrise Point-LP */
        { PCI_DEVICE(0x8086, 0x9d70),
                .driver_data = (unsigned long)&snd_soc_acpi_intel_skl_machines},
+#endif
+#if IS_ENABLED(CONFIG_SND_SOC_INTEL_APL)
        /* BXT-P */
        { PCI_DEVICE(0x8086, 0x5a98),
                .driver_data = (unsigned long)&snd_soc_acpi_intel_bxt_machines},
+#endif
+#if IS_ENABLED(CONFIG_SND_SOC_INTEL_KBL)
        /* KBL */
        { PCI_DEVICE(0x8086, 0x9D71),
                .driver_data = (unsigned long)&snd_soc_acpi_intel_kbl_machines},
+#endif
+#if IS_ENABLED(CONFIG_SND_SOC_INTEL_GLK)
        /* GLK */
        { PCI_DEVICE(0x8086, 0x3198),
                .driver_data = (unsigned long)&snd_soc_acpi_intel_glk_machines},
+#endif
+#if IS_ENABLED(CONFIG_SND_SOC_INTEL_CNL)
        /* CNL */
        { PCI_DEVICE(0x8086, 0x9dc8),
                .driver_data = (unsigned long)&snd_soc_acpi_intel_cnl_machines},
+#endif
+#if IS_ENABLED(CONFIG_SND_SOC_INTEL_CFL)
        /* CFL */
        { PCI_DEVICE(0x8086, 0xa348),
                .driver_data = (unsigned long)&snd_soc_acpi_intel_cnl_machines},
+#endif
        { 0, }
 };
 MODULE_DEVICE_TABLE(pci, skl_ids);