Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 *
  4 *  Bluetooth support for Intel devices
  5 *
  6 *  Copyright (C) 2015  Intel Corporation
  7 */
  8
  9struct intel_version {
 10	u8 status;
 11	u8 hw_platform;
 12	u8 hw_variant;
 13	u8 hw_revision;
 14	u8 fw_variant;
 15	u8 fw_revision;
 16	u8 fw_build_num;
 17	u8 fw_build_ww;
 18	u8 fw_build_yy;
 19	u8 fw_patch_num;
 20} __packed;
 21
 22struct intel_boot_params {
 23	__u8     status;
 24	__u8     otp_format;
 25	__u8     otp_content;
 26	__u8     otp_patch;
 27	__le16   dev_revid;
 28	__u8     secure_boot;
 29	__u8     key_from_hdr;
 30	__u8     key_type;
 31	__u8     otp_lock;
 32	__u8     api_lock;
 33	__u8     debug_lock;
 34	bdaddr_t otp_bdaddr;
 35	__u8     min_fw_build_nn;
 36	__u8     min_fw_build_cw;
 37	__u8     min_fw_build_yy;
 38	__u8     limited_cce;
 39	__u8     unlocked_state;
 40} __packed;
 41
 42struct intel_bootup {
 43	__u8     zero;
 44	__u8     num_cmds;
 45	__u8     source;
 46	__u8     reset_type;
 47	__u8     reset_reason;
 48	__u8     ddc_status;
 49} __packed;
 50
 51struct intel_secure_send_result {
 52	__u8     result;
 53	__le16   opcode;
 54	__u8     status;
 55} __packed;
 56
 57struct intel_reset {
 58	__u8     reset_type;
 59	__u8     patch_enable;
 60	__u8     ddc_reload;
 61	__u8     boot_option;
 62	__le32   boot_param;
 63} __packed;
 64
 65#if IS_ENABLED(CONFIG_BT_INTEL)
 66
 67int btintel_check_bdaddr(struct hci_dev *hdev);
 68int btintel_enter_mfg(struct hci_dev *hdev);
 69int btintel_exit_mfg(struct hci_dev *hdev, bool reset, bool patched);
 70int btintel_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr);
 71int btintel_set_diag(struct hci_dev *hdev, bool enable);
 72int btintel_set_diag_mfg(struct hci_dev *hdev, bool enable);
 73void btintel_hw_error(struct hci_dev *hdev, u8 code);
 74
 75void btintel_version_info(struct hci_dev *hdev, struct intel_version *ver);
 76int btintel_secure_send(struct hci_dev *hdev, u8 fragment_type, u32 plen,
 77			const void *param);
 78int btintel_load_ddc_config(struct hci_dev *hdev, const char *ddc_name);
 79int btintel_set_event_mask(struct hci_dev *hdev, bool debug);
 80int btintel_set_event_mask_mfg(struct hci_dev *hdev, bool debug);
 81int btintel_read_version(struct hci_dev *hdev, struct intel_version *ver);
 82
 83struct regmap *btintel_regmap_init(struct hci_dev *hdev, u16 opcode_read,
 84				   u16 opcode_write);
 85int btintel_send_intel_reset(struct hci_dev *hdev, u32 boot_param);
 86int btintel_read_boot_params(struct hci_dev *hdev,
 87			     struct intel_boot_params *params);
 88int btintel_download_firmware(struct hci_dev *dev, const struct firmware *fw,
 89			      u32 *boot_param);
 90#else
 91
 92static inline int btintel_check_bdaddr(struct hci_dev *hdev)
 93{
 94	return -EOPNOTSUPP;
 95}
 96
 97static inline int btintel_enter_mfg(struct hci_dev *hdev)
 98{
 99	return -EOPNOTSUPP;
100}
101
102static inline int btintel_exit_mfg(struct hci_dev *hdev, bool reset, bool patched)
103{
104	return -EOPNOTSUPP;
105}
106
107static inline int btintel_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr)
108{
109	return -EOPNOTSUPP;
110}
111
112static inline int btintel_set_diag(struct hci_dev *hdev, bool enable)
113{
114	return -EOPNOTSUPP;
115}
116
117static inline int btintel_set_diag_mfg(struct hci_dev *hdev, bool enable)
118{
119	return -EOPNOTSUPP;
120}
121
122static inline void btintel_hw_error(struct hci_dev *hdev, u8 code)
123{
124}
125
126static inline void btintel_version_info(struct hci_dev *hdev,
127					struct intel_version *ver)
128{
129}
130
131static inline int btintel_secure_send(struct hci_dev *hdev, u8 fragment_type,
132				      u32 plen, const void *param)
133{
134	return -EOPNOTSUPP;
135}
136
137static inline int btintel_load_ddc_config(struct hci_dev *hdev,
138					  const char *ddc_name)
139{
140	return -EOPNOTSUPP;
141}
142
143static inline int btintel_set_event_mask(struct hci_dev *hdev, bool debug)
144{
145	return -EOPNOTSUPP;
146}
147
148static inline int btintel_set_event_mask_mfg(struct hci_dev *hdev, bool debug)
149{
150	return -EOPNOTSUPP;
151}
152
153static inline int btintel_read_version(struct hci_dev *hdev,
154				       struct intel_version *ver)
155{
156	return -EOPNOTSUPP;
157}
158
159static inline struct regmap *btintel_regmap_init(struct hci_dev *hdev,
160						 u16 opcode_read,
161						 u16 opcode_write)
162{
163	return ERR_PTR(-EINVAL);
164}
165
166static inline int btintel_send_intel_reset(struct hci_dev *hdev,
167					   u32 reset_param)
168{
169	return -EOPNOTSUPP;
170}
171
172static inline int btintel_read_boot_params(struct hci_dev *hdev,
173					   struct intel_boot_params *params)
174{
175	return -EOPNOTSUPP;
176}
177
178static inline int btintel_download_firmware(struct hci_dev *dev,
179					    const struct firmware *fw,
180					    u32 *boot_param)
181{
182	return -EOPNOTSUPP;
183}
184#endif