These days, if you have a laptop or desktop PC, you can choose from a wide variety of OSes that will run on your hardware at least to some degree. Yet for mobile devices, you have to find a specific build of an OS for your specific device. So if you have a cheap, unpopular device, you're kinda stuck with what you got from the factory.
Why is this? Is there something about SoC hardware that makes hardware support all-or-nothing?