1 /* 2 * 3 * Bluetooth support for Intel devices 4 * 5 * Copyright (C) 2015 Intel Corporation 6 * 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * 22 */ 23 24 struct intel_version { 25 u8 status; 26 u8 hw_platform; 27 u8 hw_variant; 28 u8 hw_revision; 29 u8 fw_variant; 30 u8 fw_revision; 31 u8 fw_build_num; 32 u8 fw_build_ww; 33 u8 fw_build_yy; 34 u8 fw_patch_num; 35 } __packed; 36 37 struct intel_boot_params { 38 __u8 status; 39 __u8 otp_format; 40 __u8 otp_content; 41 __u8 otp_patch; 42 __le16 dev_revid; 43 __u8 secure_boot; 44 __u8 key_from_hdr; 45 __u8 key_type; 46 __u8 otp_lock; 47 __u8 api_lock; 48 __u8 debug_lock; 49 bdaddr_t otp_bdaddr; 50 __u8 min_fw_build_nn; 51 __u8 min_fw_build_cw; 52 __u8 min_fw_build_yy; 53 __u8 limited_cce; 54 __u8 unlocked_state; 55 } __packed; 56 57 struct intel_bootup { 58 __u8 zero; 59 __u8 num_cmds; 60 __u8 source; 61 __u8 reset_type; 62 __u8 reset_reason; 63 __u8 ddc_status; 64 } __packed; 65 66 struct intel_secure_send_result { 67 __u8 result; 68 __le16 opcode; 69 __u8 status; 70 } __packed; 71 72 #if IS_ENABLED(CONFIG_BT_INTEL) 73 74 int btintel_check_bdaddr(struct hci_dev *hdev); 75 int btintel_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr); 76 void btintel_hw_error(struct hci_dev *hdev, u8 code); 77 78 void btintel_version_info(struct hci_dev *hdev, struct intel_version *ver); 79 int btintel_secure_send(struct hci_dev *hdev, u8 fragment_type, u32 plen, 80 const void *param); 81 82 #else 83 84 static inline int btintel_check_bdaddr(struct hci_dev *hdev) 85 { 86 return -EOPNOTSUPP; 87 } 88 89 static inline int btintel_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr) 90 { 91 return -EOPNOTSUPP; 92 } 93 94 static inline void btintel_hw_error(struct hci_dev *hdev, u8 code) 95 { 96 } 97 98 static void btintel_version_info(struct hci_dev *hdev, struct intel_version *ver) 99 { 100 } 101 102 static inline int btintel_secure_send(struct hci_dev *hdev, u8 fragment_type, 103 u32 plen, const void *param) 104 { 105 return -EOPNOTSUPP; 106 } 107 108 #endif 109