I think the main requirement for general purpose computing is the decoupling of software from hardware and allowing modularity.
The problem is that with Apple, Samsung, etc fully integrate the hardware and software in house, this means all the drivers and blobs can be kept in house secret.
On the other hand a PC can be built by anyone from hardware components they choose. In order to make this work all the drivers and blobs for all the hardware components need to be public, and therefore can be integrated into the Linux kernel, allowing anyone to use an open source OS on their system.