One approach might be to see if the software can be replaced with an open-source alternative that allows an equivalent level of access to the hardware functionality, with official support for performing such a replacement (though not necessarily for the replacement software itself). If so, then the manufacturer need not provide the source code. Whereas if there is no supported way of replacing the software with an open-source alternative, then compel the manufacturer to make the software available.
Under this system, Garmin could keep their software closed-source as long as they provide a way to replace the firmware and software with an open-source alternative that can use all of the hardware features, while not necessarily having the software features.
Also I don't really care about having the source code of the firmware if I have an API to access it. If I own Qualcomm hardware, I should not need a damn NDA to flash something on it.
Under this system, Garmin could keep their software closed-source as long as they provide a way to replace the firmware and software with an open-source alternative that can use all of the hardware features, while not necessarily having the software features.