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