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 v5: - Rename parameters to bt-* and read as integer instead of bytestring - Update documentation with defaults and put values in header - Changed patch order Changes in v4: - Fix incorrect function name in hci_bcm 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 dt-bindings: net: broadcom-bluetooth: Add pcm config Bluetooth: hci_bcm: Support pcm params in dts .../bindings/net/broadcom-bluetooth.txt | 20 ++++- drivers/bluetooth/btbcm.c | 19 +++++ drivers/bluetooth/btbcm.h | 8 ++ drivers/bluetooth/hci_bcm.c | 78 ++++++++++++++++++- include/dt-bindings/bluetooth/brcm.h | 32 ++++++++ 5 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 include/dt-bindings/bluetooth/brcm.h -- 2.24.0.432.g9d3f5f5b63-goog