
Epic fail
First, an explanation: Mobile phones are actually a globbed together mix of systems, not a single device as the average consumer believes. There is the communication stack -- the 'phone' part of your smart phone, and then there is the main system, the 'smart' part of your phone where all the apps and such live. Other systems that are hung off the main system include GPS, WiFi/Bluetooth (usually integrated), camera, and sometimes a GPIO (Generic Pin I/O) plug-in for a notification LED, auto-sensing headphone jack, camera flash, etc. These are each so-called 'systems on a chip' which are baked into your phone via a generic internal bus (USB for example). The main system accesses it via a primitive set of I/O calls.
This design is to minimize development costs -- want to add a camera? You don't need to redesign the entire stack, just glom it to the bus and do the interface in software. The downside is that the system you're attaching can't be updated easily, if at all. Making matters worse, the internal bus used isn't usually something like USB where there is a clear device/host barrier (ie, the device can't access main memory); It is usually a bus (like PCI) that has access to every other peripheral and can raise interrupts, access main memory, etc. These SoCs follow the same pattern internally -- often they, themselves, are glommed together frankensteins with the glue logic sitting in firmware.
The end result is your phone is basically a network internally, and what you're accessing (touchscreen, buttons, microphone) is just one device on this network. Worse, Android (unlike Apple) suffers from severe fracturing, meaning it's up to the manufacturer to release updates for each specific device. It's easier to just tell their customers to buy a new phone every year rather than properly support it with security and OS updates for its expected service life -- ie, until the hardware is simply not capable of doing what the user wants anymore.
So yes, shame on Broadcom for crappy development practices, but this is really an industry problem. We can't keep borgifying our devices and assimilating everything into the everythings, then not supporting it, and expect it not to end in disaster. IT: The only branch of engineering where a trend of decreasing reliability and increasing costs doesn't alarm anyone. Because let's be honest: If we built our houses like we build our information systems, the first wood pecker to come along would destroy civilization.