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