I learned a couple of days ago that audio on an Asus Vivostick TS10, which is a SoC built around an Intel Atom x5-Z8350, does not work under Linux kernels through 4.10. The bug fixes are in 4.11.
There was a lot to figure out to get Linux working on that PC. It came with Windows 10, and I thought I'd turn it into a dual boot machine. First, just to get it to boot a flash drive, have to know the magic trick in Windows 10: hold down the shift key when selecting "reboot" in the Windows 10 exit menu. If you don't, the PC will ignore the flash drive and just boot Windows 10 again. Then Linux couldn't mount the Windows partition, couldn't shrink it and it took a while to learn why. They'd installed Windows 10 with this Bitlocker encryption enabled. Why did Asus do that, I wonder? Fortunately it's not too hard to turn Bitlocker off, just takes a while to process. Once that was done, the partition tools could go to work. Installed Ubuntu 17.04. and it all worked except the audio. After much hunting around, I gathered that kernels 4.5 and perhaps earlier through 4.10 do not have working audio for this particular PC. Ubuntu 17.04 uses kernel 4.10. So I rolled my own kernel, using 4.11-rc8.
I'd never used an SSD based PC before, and it took more hunting to figure out which kernel drivers were correct. SCSI? No. Surely not old ATA or older stuff? Nope. There's this NVE driver for SSDs on the PCI bus. No, wasn't that either. The correct drivers are the MMC ones.
Wish the default settings of the kernel configuration were much more "opt in". They've set the configuration to include just about everything, including a lot of debugging code. They think only kernel developers want to compile kernels? Takes a lot of digging to exclude all the unneeded drivers.