11286be27SSebastian ReichelNokia Bluetooth Chips
21286be27SSebastian Reichel---------------------
31286be27SSebastian Reichel
41286be27SSebastian ReichelNokia phones often come with UART connected bluetooth chips from different
51286be27SSebastian Reichelvendors and modified device API. Those devices speak a protocol named H4+
61286be27SSebastian Reichel(also known as h4p) by Nokia, which is similar to the H4 protocol from the
71286be27SSebastian ReichelBluetooth standard. In addition to the H4 protocol it specifies two more
81286be27SSebastian ReichelUART status lines for wakeup of UART transceivers to improve power management
91286be27SSebastian Reicheland a few new packet types used to negotiate uart speed.
101286be27SSebastian Reichel
111286be27SSebastian ReichelRequired properties:
121286be27SSebastian Reichel
131286be27SSebastian Reichel - compatible: should contain "nokia,h4p-bluetooth" as well as one of the following:
141286be27SSebastian Reichel   * "brcm,bcm2048-nokia"
151286be27SSebastian Reichel   * "ti,wl1271-bluetooth-nokia"
161286be27SSebastian Reichel - reset-gpios: GPIO specifier, used to reset the BT module (active low)
171286be27SSebastian Reichel - bluetooth-wakeup-gpios: GPIO specifier, used to wakeup the BT module (active high)
181286be27SSebastian Reichel - host-wakeup-gpios: GPIO specifier, used to wakeup the host processor (active high)
191286be27SSebastian Reichel - clock-names: should be "sysclk"
201286be27SSebastian Reichel - clocks: should contain a clock specifier for every name in clock-names
211286be27SSebastian Reichel
221286be27SSebastian ReichelOptional properties:
231286be27SSebastian Reichel
241286be27SSebastian Reichel - None
251286be27SSebastian Reichel
261286be27SSebastian ReichelExample:
271286be27SSebastian Reichel
281286be27SSebastian Reichel/ {
291286be27SSebastian Reichel       /* controlled (enabled/disabled) directly by BT module */
301286be27SSebastian Reichel       bluetooth_clk: vctcxo {
311286be27SSebastian Reichel               compatible = "fixed-clock";
321286be27SSebastian Reichel               #clock-cells = <0>;
331286be27SSebastian Reichel               clock-frequency = <38400000>;
341286be27SSebastian Reichel       };
351286be27SSebastian Reichel};
361286be27SSebastian Reichel
371286be27SSebastian Reichel&uart2 {
381286be27SSebastian Reichel       pinctrl-names = "default";
391286be27SSebastian Reichel       pinctrl-0 = <&uart2_pins>;
401286be27SSebastian Reichel
411286be27SSebastian Reichel       bluetooth {
421286be27SSebastian Reichel               compatible = "ti,wl1271-bluetooth-nokia", "nokia,h4p-bluetooth";
431286be27SSebastian Reichel
441286be27SSebastian Reichel               reset-gpios = <&gpio1 26 GPIO_ACTIVE_LOW>; /* gpio26 */
451286be27SSebastian Reichel               host-wakeup-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; /* gpio101 */
461286be27SSebastian Reichel               bluetooth-wakeup-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>; /* gpio37 */
471286be27SSebastian Reichel
481286be27SSebastian Reichel               clocks = <&bluetooth_clk>;
491286be27SSebastian Reichel               clock-names = "sysclk";
501286be27SSebastian Reichel       };
511286be27SSebastian Reichel};
52