728x90
반응형
ufs 는 scsi 스택의 low-level device deiver 로 등록되어 있으며, 최근 kernel 에서 drivers/scsi/ufs 의 경로가 drivers/ufs/core, drivers/ufs/host 로 각각 변경되었다. 기존 하나의 디렉토리 내에 존재하던 소스 트리가 각각의 성격에 맞게 정리되었다고 볼 수 있다.
(출처 : https://elixir.bootlin.com/linux/latest/source/drivers/ufs)
- core : ufs host control driver, ufshpb(host aware performance booster) 및 debugfs, crypto(ICE-inline crypto engine)등 ufs device 를 제어하는 공통 코드인 core driver 가 위치한 곳이다. 추가로 ufs 는 scsi command 외의 전용 command set 지원이 필요하여 scsi generic device interface 인 sg(sg3 utils 로 제어가능)외에 bsg interface(ufs utils로 제어가능)를 지원한다.
- host : kernel의 디바이스 드라이버 관련 platform bus(platform device와 platform driver 를 조합해 줌)에 해당되며, 이와 연결되는 Host SoC(qualcomm, exynos, kirin, mediatek, intel 등등)관련 코드들이 주로 정의 되어 있다. Vendor 전용 operation, configuration 및 quirks 등이 주로 정의 되어 있으며, platform driver 관련 내용의 정의와 초기화를 처리하여 ufs driver 의 probing 또한 host 내 SoC 코드에서 시작된다.
1. drivers/ufs/host
- ufs-<chipset>.c/h : 해당 칩셋의 platfrom_device(ufshci)의 기본적인 configuration 과 platform_driver probe 를 호출한다. 이는 ufshcd-pltfrm.c의 init 에 해당된다.
- ufshcd-pltfrm.c/h : ufs device 의 초기화를 위하여 host side 및 보드 수준의 configuration check(클럭, 전원 등) 동작을 먼저 처리해준 후 ufs 초기화를 실행한다. 이는 core 의 ufshcd.c 의 init 에 해당한다.
2. drivers/ufs/core
- ufshcd.c/h : ufs device 의 초기화 부터 shutdown 까지의 모든 동작을 담당하는 low level driver 로 각 SoC vendor 별 특징에 맞는 vops 처리와 runtime/system power management 등 OS scheme/feature 별 동작을 지원한다.
728x90
반응형
댓글