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