본문 바로가기
1.일상다반사/이력관리 :: 월급 루팡

UFS(universal flash storage) - ufs source tree in linux kernel

by kyuho.choi 2023. 4. 28.
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)

drivers/ufs : source tree

  • 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로 제어가능)를 지원한다.

drivers/ufs/core : ufs host control driver 와 crypto/bsg/hpb 등 기타 feature drivers

 

  • 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 코드에서 시작된다.

drivers/ufs/host : SoC/Chipset drivers(ufshci)

 

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
반응형

댓글