sound/soc/samsung/rainbow_prince.c
1) Platform driver 드라이버 정의
이름이 "rainbow-sound"인 platform_driver를 등록
probe, remove member ops는
- rainbow_sound_probe,
- rainbow_sound_remove 함수를 이용
* platform_driver: include/linux/platform_device.h 정의
* platform device, 가상 버스인 플랫폼 버스에 연결되는 hot plugin 미지원으로 항상 연결되어 있음이 보장되어 있는 장치라고 한다. 주로 device-tree에 정의(항상 연결되어 있으니 실제 장치 확인 필요 없음)한다 함??
[MODULE_DEVICE_TABLE 관련 공부 필요]
2) probe 호출 및 카드 등록
dt에서 장치를 찾았으므로 아래 호출으로 등록한 rainbow_sound_driver의 probe 함수인 rainbow_sound_probe가 호출
module_platform_driver(rainbow_sound_driver);
-> module_platform_driver 매크로는 보일러플레이트(상용구)로 따라가보면 rainbow_sound_driver의 init, exit 함수를 정의해주며, module_init (include/linux/module.h), __initcall (include/linux/init.h), device_initcall, __define_initcall(fn, 6)... 따라 올라가서 asm으로 영역 지정한다.
호출 시점은 kernel_init 부터라는데 이 부분은 https://m.blog.naver.com/kazama10/50174820319 참고, 대충 early 먼저 호출되고, init은 지정된 번호 순서대로 호출되는 듯. [initcall 공부 필요]
'프로그래밍 > 리눅스 커널' 카테고리의 다른 글
s906b sound card probe 살펴보기 (1) | 2022.05.26 |
---|---|
삼성 S906B (S22+) 리눅스 커널 다운 및 vim, cscope, ctags 준비 (0) | 2022.05.19 |