요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Generic Bluetooth controller over USB (btusb driver)
---------------------------------------------------
Required properties:
- compatible : should comply with the format "usbVID,PID" specified in
Documentation/devicetree/bindings/usb/usb-device.yaml
At the time of writing, the only OF supported devices
(more may be added later) are:
"usb1286,204e" (Marvell 8997)
"usbcf3,e300" (Qualcomm QCA6174A)
"usb4ca,301a" (Qualcomm QCA6174A (Lite-On))
Also, vendors that use btusb may have device additional properties, e.g:
Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt
Optional properties:
- interrupt-names: (see below)
- interrupts : The interrupt specified by the name "wakeup" is the interrupt
that shall be used for out-of-band wake-on-bt. Driver will
request this interrupt for wakeup. During system suspend, the
irq will be enabled so that the bluetooth chip can wakeup host
platform out of band. During system resume, the irq will be
disabled to make sure unnecessary interrupt is not received.
Example:
Following example uses irq pin number 3 of gpio0 for out of band wake-on-bt:
&usb_host1_ehci {
#address-cells = <1>;
#size-cells = <0>;
mvl_bt1: bt@1 {
compatible = "usb1286,204e";
reg = <1>;
interrupt-parent = <&gpio0>;
interrupt-names = "wakeup";
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
USB Bluetooth 컨트롤러와 필수 속성
1-18이 binding은 `btusb` 드라이버가 사용하는 일반 USB Bluetooth controller를 설명합니다.
필수 `compatible`은 `Documentation/devicetree/bindings/usb/usb-device.yaml`이 정의한 `usbVID,PID` 형식을 따라야 합니다. 작성 당시 OF 지원 장치는 Marvell 8997의 `usb1286,204e`, Qualcomm QCA6174A의 `usbcf3,e300`, Lite-On QCA6174A의 `usb4ca,301a`이며 이후 더 추가될 수 있습니다.
`btusb`를 쓰는 공급업체 장치는 추가 속성을 가질 수 있습니다. 예로 `Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt`가 있습니다.
대역 외 wake-on-Bluetooth interrupt
19-28선택 `interrupt-names`와 `interrupts`를 사용할 수 있습니다. 이름이 `wakeup`인 interrupt는 out-of-band wake-on-Bluetooth에 사용되며 드라이버가 wakeup 용도로 요청합니다.
시스템 suspend 중에는 Bluetooth 칩이 host platform을 대역 외로 깨울 수 있도록 IRQ를 enable합니다. resume 중에는 불필요한 interrupt 수신을 막도록 IRQ를 disable합니다.
Suspend와 resume 경계에서 wakeup IRQ 상태가 바뀝니다.
Marvell 8997 wakeup IRQ 예제
29-44예제는 `gpio0`의 IRQ pin 3을 out-of-band wake-on-Bluetooth에 사용합니다. USB host의 주소 1에 있는 Marvell 8997 장치는 active-low level interrupt를 `wakeup`으로 명명합니다.
&usb_host1_ehci {
#address-cells = <1>;
#size-cells = <0>;
mvl_bt1: bt@1 {
compatible = "usb1286,204e";
reg = <1>;
interrupt-parent = <&gpio0>;
interrupt-names = "wakeup";
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
};
};
요약과 해설
btusb.txt:1-44Suspend 중 wakeup IRQ를 켜고 resume 중 끄는 out-of-band wake-on-Bluetooth 흐름을 설명합니다.