Loic Poulain
d06f107bcd
Bluetooth: btintel: Add iBT register access over HCI support
Add regmap ibt to support Intel Bluetooth silicon register access
over HCI. Intel BT/FM combo chip allows to read/write some registers
(e.g. FM registers) via its HCI interface.
Read/Write operations are performed via a HCI transaction composed of
a HCI command (host->controller) followed by a HCI command complete
event (controller->host). Read/Write Command opcodes can be specified
to the regmap init function.
We define data formats which are intel/vendor specific.
Register Read/Write HCI command payload (Host):
Field: | REG ADDR | MODE | DATA_LEN | DATA... |
size: | 32b | 8b | 8b | 8b* |
Register Read HCI command complete event payload (Controller):
Field: | CMD STATUS | REG ADDR | DATA... |
size: | 8b | 32b | 8b* |
Register Write HCI command complete event payload (Controller):
Field: | CMD_STATUS |
size: | 8b |
Since this payload is HCI encapsulated, Little Endian byte order is
used.
Write/Read Example:
If we write 0x0000002a at address 0x00008c04, with opcode_write 0xfc5d,
The resulting transaction is (btmon trace):
< HCI Command (0x3f|0x005d) plen 10 [hci0]
04 8c 00 00 02 04 2a 00 00 00
> HCI Event (0x0e) plen 4
Unknown (0x3f|0x005d) ncmd 1
00
Then, if we read the same register with opcode_read 0xfc5e:
< HCI Command (0x3f|0x005e) plen 6 [hci0]
04 8c 00 00 02 04
> HCI Event (0x0e) plen 12 [hci0]
Unknown (0x3f|0x005e) ncmd 1
00 04 8c 00 00 2a 00 00 00
Signed-off-by: Loic Poulain <loic.poulain@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
2015-10-03 19:03:15 +02:00
..
2015-06-18 21:00:06 +03:00
2012-08-06 15:03:00 -03:00
2015-07-23 17:10:49 +02:00
2015-09-25 10:19:03 +02:00
2013-10-11 17:05:22 +02:00
2015-09-25 16:31:36 +02:00
2015-07-30 13:18:08 +02:00
2015-06-17 18:56:53 +02:00
2015-10-03 19:03:15 +02:00
2015-10-03 19:03:15 +02:00
2014-12-03 17:35:51 +01:00
2015-07-27 10:30:32 +03:00
2015-09-25 21:39:04 +02:00
2015-09-25 21:39:04 +02:00
2014-12-03 17:35:51 +01:00
2015-08-10 23:52:20 +02:00
2015-08-10 23:52:20 +02:00
2015-05-14 12:04:12 +02:00
2015-05-14 12:04:12 +02:00
2013-12-29 21:31:07 +02:00
2015-09-30 15:26:12 +02:00
2015-09-17 13:20:06 +02:00
2015-05-13 23:00:51 +02:00
2015-07-23 17:10:49 +02:00
2015-06-17 14:21:08 +02:00
2015-10-01 10:03:38 +02:00
2015-06-09 13:59:09 +02:00
2015-08-28 21:00:37 +02:00
2015-09-30 16:12:17 +02:00
2015-10-01 08:55:42 +02:00
2015-09-24 16:25:44 +02:00
2015-04-07 18:47:10 +02:00
2015-09-28 13:06:13 +02:00
2015-09-24 16:25:44 +02:00
2015-06-04 10:02:04 +07:00
2015-10-03 19:03:15 +02:00
2015-08-10 23:52:20 +02:00