1a4ccc9e3SRajat JainMarvell 8897/8997 (sd8897/sd8997) bluetooth devices (SDIO or USB based)
2a4ccc9e3SRajat Jain------
3a4ccc9e3SRajat JainThe 8997 devices supports multiple interfaces. When used on SDIO interfaces,
4a4ccc9e3SRajat Jainthe btmrvl driver is used and when used on USB interface, the btusb driver is
5a4ccc9e3SRajat Jainused.
6a4ccc9e3SRajat Jain
7a4ccc9e3SRajat JainRequired properties:
8a4ccc9e3SRajat Jain
9a4ccc9e3SRajat Jain  - compatible : should be one of the following:
10a4ccc9e3SRajat Jain	* "marvell,sd8897-bt" (for SDIO)
11a4ccc9e3SRajat Jain	* "marvell,sd8997-bt" (for SDIO)
12a4ccc9e3SRajat Jain	* "usb1286,204e"      (for USB)
13a4ccc9e3SRajat Jain
14a4ccc9e3SRajat JainOptional properties:
15a4ccc9e3SRajat Jain
16a4ccc9e3SRajat Jain  - marvell,cal-data: Calibration data downloaded to the device during
17a4ccc9e3SRajat Jain		      initialization. This is an array of 28 values(u8).
18a4ccc9e3SRajat Jain		      This is only applicable to SDIO devices.
19a4ccc9e3SRajat Jain
20a4ccc9e3SRajat Jain  - marvell,wakeup-pin: It represents wakeup pin number of the bluetooth chip.
21a4ccc9e3SRajat Jain		        firmware will use the pin to wakeup host system (u16).
22a4ccc9e3SRajat Jain  - marvell,wakeup-gap-ms: wakeup gap represents wakeup latency of the host
23a4ccc9e3SRajat Jain		      platform. The value will be configured to firmware. This
24a4ccc9e3SRajat Jain		      is needed to work chip's sleep feature as expected (u16).
25a4ccc9e3SRajat Jain  - interrupt-names: Used only for USB based devices (See below)
26a4ccc9e3SRajat Jain  - interrupts : specifies the interrupt pin number to the cpu. For SDIO, the
27a4ccc9e3SRajat Jain		 driver will use the first interrupt specified in the interrupt
28a4ccc9e3SRajat Jain		 array. For USB based devices, the driver will use the interrupt
29a4ccc9e3SRajat Jain		 named "wakeup" from the interrupt-names and interrupt arrays.
30a4ccc9e3SRajat Jain		 The driver will request an irq based on this interrupt number.
31a4ccc9e3SRajat Jain		 During system suspend, the irq will be enabled so that the
32a4ccc9e3SRajat Jain		 bluetooth chip can wakeup host platform under certain
33a4ccc9e3SRajat Jain		 conditions. During system resume, the irq will be disabled
34a4ccc9e3SRajat Jain		 to make sure unnecessary interrupt is not received.
35a4ccc9e3SRajat Jain
36a4ccc9e3SRajat JainExample:
37a4ccc9e3SRajat Jain
38a4ccc9e3SRajat JainIRQ pin 119 is used as system wakeup source interrupt.
39a4ccc9e3SRajat Jainwakeup pin 13 and gap 100ms are configured so that firmware can wakeup host
40a4ccc9e3SRajat Jainusing this device side pin and wakeup latency.
41a4ccc9e3SRajat Jain
42a4ccc9e3SRajat JainExample for SDIO device follows (calibration data is also available in
43a4ccc9e3SRajat Jainbelow example).
44a4ccc9e3SRajat Jain
45a4ccc9e3SRajat Jain&mmc3 {
46a4ccc9e3SRajat Jain	vmmc-supply = <&wlan_en_reg>;
47a4ccc9e3SRajat Jain	bus-width = <4>;
48a4ccc9e3SRajat Jain	cap-power-off-card;
49a4ccc9e3SRajat Jain	keep-power-in-suspend;
50a4ccc9e3SRajat Jain
51a4ccc9e3SRajat Jain	#address-cells = <1>;
52a4ccc9e3SRajat Jain	#size-cells = <0>;
53a4ccc9e3SRajat Jain	btmrvl: bluetooth@2 {
54a4ccc9e3SRajat Jain		compatible = "marvell,sd8897-bt";
55a4ccc9e3SRajat Jain		reg = <2>;
56a4ccc9e3SRajat Jain		interrupt-parent = <&pio>;
57a4ccc9e3SRajat Jain		interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
58a4ccc9e3SRajat Jain
59a4ccc9e3SRajat Jain		marvell,cal-data = /bits/ 8 <
60a4ccc9e3SRajat Jain			0x37 0x01 0x1c 0x00 0xff 0xff 0xff 0xff 0x01 0x7f 0x04 0x02
61a4ccc9e3SRajat Jain			0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
62a4ccc9e3SRajat Jain			0x00 0x00 0xf0 0x00>;
63a4ccc9e3SRajat Jain		marvell,wakeup-pin = /bits/ 16 <0x0d>;
64a4ccc9e3SRajat Jain		marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
65a4ccc9e3SRajat Jain	};
66a4ccc9e3SRajat Jain};
67a4ccc9e3SRajat Jain
68a4ccc9e3SRajat JainExample for USB device:
69a4ccc9e3SRajat Jain
70a4ccc9e3SRajat Jain&usb_host1_ohci {
71a4ccc9e3SRajat Jain    #address-cells = <1>;
72a4ccc9e3SRajat Jain    #size-cells = <0>;
73a4ccc9e3SRajat Jain
74a4ccc9e3SRajat Jain    mvl_bt1: bt@1 {
75a4ccc9e3SRajat Jain	compatible = "usb1286,204e";
76a4ccc9e3SRajat Jain	reg = <1>;
77a4ccc9e3SRajat Jain	interrupt-parent = <&gpio0>;
78a4ccc9e3SRajat Jain	interrupt-names = "wakeup";
79a4ccc9e3SRajat Jain	interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
80a4ccc9e3SRajat Jain	marvell,wakeup-pin = /bits/ 16 <0x0d>;
81a4ccc9e3SRajat Jain	marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
82a4ccc9e3SRajat Jain    };
83a4ccc9e3SRajat Jain};
84