hci_qca.c (f730cc9fee2b47c22964b4843a41d723f436b62a) hci_qca.c (2064ee332e4c1b7495cf68b84355c213d8fe71fd)
1/*
2 * Bluetooth Software UART Qualcomm protocol
3 *
4 * HCI_IBS (HCI In-Band Sleep) is Qualcomm's power management
5 * protocol extension to H4.
6 *
7 * Copyright (C) 2007 Texas Instruments, Inc.
8 * Copyright (c) 2010, 2012 The Linux Foundation. All rights reserved.

--- 786 unchanged lines hidden (view full) ---

795
796 if (!test_bit(HCI_UART_REGISTERED, &hu->flags))
797 return -EUNATCH;
798
799 qca->rx_skb = h4_recv_buf(hu->hdev, qca->rx_skb, data, count,
800 qca_recv_pkts, ARRAY_SIZE(qca_recv_pkts));
801 if (IS_ERR(qca->rx_skb)) {
802 int err = PTR_ERR(qca->rx_skb);
1/*
2 * Bluetooth Software UART Qualcomm protocol
3 *
4 * HCI_IBS (HCI In-Band Sleep) is Qualcomm's power management
5 * protocol extension to H4.
6 *
7 * Copyright (C) 2007 Texas Instruments, Inc.
8 * Copyright (c) 2010, 2012 The Linux Foundation. All rights reserved.

--- 786 unchanged lines hidden (view full) ---

795
796 if (!test_bit(HCI_UART_REGISTERED, &hu->flags))
797 return -EUNATCH;
798
799 qca->rx_skb = h4_recv_buf(hu->hdev, qca->rx_skb, data, count,
800 qca_recv_pkts, ARRAY_SIZE(qca_recv_pkts));
801 if (IS_ERR(qca->rx_skb)) {
802 int err = PTR_ERR(qca->rx_skb);
803 BT_ERR("%s: Frame reassembly failed (%d)", hu->hdev->name, err);
803 bt_dev_err(hu->hdev, "Frame reassembly failed (%d)", err);
804 qca->rx_skb = NULL;
805 return err;
806 }
807
808 return count;
809}
810
811static struct sk_buff *qca_dequeue(struct hci_uart *hu)

--- 46 unchanged lines hidden (view full) ---

858
859 if (baudrate > QCA_BAUDRATE_3000000)
860 return -EINVAL;
861
862 cmd[4] = baudrate;
863
864 skb = bt_skb_alloc(sizeof(cmd), GFP_ATOMIC);
865 if (!skb) {
804 qca->rx_skb = NULL;
805 return err;
806 }
807
808 return count;
809}
810
811static struct sk_buff *qca_dequeue(struct hci_uart *hu)

--- 46 unchanged lines hidden (view full) ---

858
859 if (baudrate > QCA_BAUDRATE_3000000)
860 return -EINVAL;
861
862 cmd[4] = baudrate;
863
864 skb = bt_skb_alloc(sizeof(cmd), GFP_ATOMIC);
865 if (!skb) {
866 BT_ERR("Failed to allocate memory for baudrate packet");
866 bt_dev_err(hdev, "Failed to allocate baudrate packet");
867 return -ENOMEM;
868 }
869
870 /* Assign commands to change baudrate and packet type. */
871 skb_put_data(skb, cmd, sizeof(cmd));
872 hci_skb_pkt_type(skb) = HCI_COMMAND_PKT;
873
874 skb_queue_tail(&qca->txq, skb);

--- 12 unchanged lines hidden (view full) ---

887
888static int qca_setup(struct hci_uart *hu)
889{
890 struct hci_dev *hdev = hu->hdev;
891 struct qca_data *qca = hu->priv;
892 unsigned int speed, qca_baudrate = QCA_BAUDRATE_115200;
893 int ret;
894
867 return -ENOMEM;
868 }
869
870 /* Assign commands to change baudrate and packet type. */
871 skb_put_data(skb, cmd, sizeof(cmd));
872 hci_skb_pkt_type(skb) = HCI_COMMAND_PKT;
873
874 skb_queue_tail(&qca->txq, skb);

--- 12 unchanged lines hidden (view full) ---

887
888static int qca_setup(struct hci_uart *hu)
889{
890 struct hci_dev *hdev = hu->hdev;
891 struct qca_data *qca = hu->priv;
892 unsigned int speed, qca_baudrate = QCA_BAUDRATE_115200;
893 int ret;
894
895 BT_INFO("%s: ROME setup", hdev->name);
895 bt_dev_info(hdev, "ROME setup");
896
897 /* Patch downloading has to be done without IBS mode */
898 clear_bit(STATE_IN_BAND_SLEEP_ENABLED, &qca->flags);
899
900 /* Setup initial baudrate */
901 speed = 0;
902 if (hu->init_speed)
903 speed = hu->init_speed;

--- 8 unchanged lines hidden (view full) ---

912 if (hu->oper_speed)
913 speed = hu->oper_speed;
914 else if (hu->proto->oper_speed)
915 speed = hu->proto->oper_speed;
916
917 if (speed) {
918 qca_baudrate = qca_get_baudrate_value(speed);
919
896
897 /* Patch downloading has to be done without IBS mode */
898 clear_bit(STATE_IN_BAND_SLEEP_ENABLED, &qca->flags);
899
900 /* Setup initial baudrate */
901 speed = 0;
902 if (hu->init_speed)
903 speed = hu->init_speed;

--- 8 unchanged lines hidden (view full) ---

912 if (hu->oper_speed)
913 speed = hu->oper_speed;
914 else if (hu->proto->oper_speed)
915 speed = hu->proto->oper_speed;
916
917 if (speed) {
918 qca_baudrate = qca_get_baudrate_value(speed);
919
920 BT_INFO("%s: Set UART speed to %d", hdev->name, speed);
920 bt_dev_info(hdev, "Set UART speed to %d", speed);
921 ret = qca_set_baudrate(hdev, qca_baudrate);
922 if (ret) {
921 ret = qca_set_baudrate(hdev, qca_baudrate);
922 if (ret) {
923 BT_ERR("%s: Failed to change the baud rate (%d)",
924 hdev->name, ret);
923 bt_dev_err(hdev, "Failed to change the baud rate (%d)",
924 ret);
925 return ret;
926 }
927 hci_uart_set_baudrate(hu, speed);
928 }
929
930 /* Setup patch / NVM configurations */
931 ret = qca_uart_setup_rome(hdev, qca_baudrate);
932 if (!ret) {

--- 34 unchanged lines hidden ---
925 return ret;
926 }
927 hci_uart_set_baudrate(hu, speed);
928 }
929
930 /* Setup patch / NVM configurations */
931 ret = qca_uart_setup_rome(hdev, qca_baudrate);
932 if (!ret) {

--- 34 unchanged lines hidden ---