While adding support for the BCM4354, I discovered a few more things that weren't working as they should have. First, we disallow serdev from setting the baudrate on BCM4354. Serdev sets the oper_speed first before calling hu->setup() in hci_uart_setup(). On the BCM4354, this results in bcm_setup() failing when the hci reset times out. Next, we add support for setting the PCM parameters, which consists of a pair of vendor specific opcodes to set the pcm parameters. The documentation for these params are available in the brcm_patchram_plus package (i.e. https://github.com/balena-os/brcm_patchram_plus). This is necessary for PCM to work properly. All changes were tested with rk3288-veyron-minnie.dts. Changes in v3: - Change disallow baudrate setting to return -EBUSY if called before ready. bcm_proto is no longer modified and is back to being const. - Changed btbcm_set_pcm_params to btbcm_set_pcm_int_params - Changed brcm,sco-routing to brcm,bt-sco-routing Changes in v2: - Use match data to disallow baudrate setting - Parse pcm parameters by name instead of as a byte string - Fix prefix for dt-bindings commit Abhishek Pandit-Subedi (4): Bluetooth: hci_bcm: Disallow set_baudrate for BCM4354 Bluetooth: btbcm: Support pcm configuration Bluetooth: hci_bcm: Support pcm params in dts dt-bindings: net: broadcom-bluetooth: Add pcm config .../bindings/net/broadcom-bluetooth.txt | 11 +++ drivers/bluetooth/btbcm.c | 18 +++++ drivers/bluetooth/btbcm.h | 8 +++ drivers/bluetooth/hci_bcm.c | 70 ++++++++++++++++++- 4 files changed, 106 insertions(+), 1 deletion(-) -- 2.24.0.rc1.363.gb1bccd3e3d-goog