Figured out problem #1 by using the snd module's slots option:
options snd slots=,,,,,,,,,,,,snd-soc-ps-mach
This assigns card number 12 to this device, exactly what I want:
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 11: ALC257 [HD-Audio Generic], device 0: ALC257 Analog [ALC257 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 12: acp63 [acp63], device 0: DMIC capture dmic-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
I also managed to work around problem #2 by assigning proper card ID's to these
snd-hda-intel devices. First they were called Generic and Generic_1 now they look like
this:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 10: HDMI [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 10: HDMI [HD-Audio Generic], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 10: HDMI [HD-Audio Generic], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 11: ALC257 [HD-Audio Generic], device 0: ALC257 Analog [ALC257 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
Their exact order is now not that important anymore but it would still be nice to do this
from /etc/modprobe.d/
So that only leaves me problem #3.
Jeremy