본문 바로가기
실습/리눅스 커널

platform driver, device

by 써드아이 2021. 2. 8.

[블로그 통합으로 이전해 온 자료] - 2008. 4. 30. 12:24

 

 

* platform device

platform_bus_type 이라는 가상의 플랫폼 버스 상에 새로운 디바이스를 등록하는 방법

 

 struct platform_device xxx_device =
 {
  .name =
  .id =
  .dev = xxx_device,   -> struct device
  .num_resources =
  .resource =     -> struct resource
 };

 platform_device_register()
 platform_device_register_simple()
 platform_device_unregister()

 xxx_init() / xxx_cleanup() 에서 등록
 


* platform driver

 struct platform_driver xxx_driver =
 {
  .probe =
  .remove =
  .shutdown =
  .suspend =
  .resume =
  .driver =
 }

 platform_driver_register()
 platform_driver_unregister()

 xxx_init() / xxx_cleanup() 에서 등록/해제

* 버스를 갖는 드라이버를 등록/해제

 struct device_driver xxx_driver
 {
  .name =
  .bus =
  .probe =
  .remove =
  .shutdown =
  .suspend =
  .resume =
 }
 
 driver_registrer()
 driver_unregistrer()

 xxx_init() / xxx_cleanup() 에서 등록

* platform resource

 struct resource
 {
  const char *name;
  unsigned long start, end;
  unsigned long flags;
  struct resource *parent, *sibling, *child;
 };
 

platform_device, platform_driver, device_driver 등의 구조체..
어떻게 써야하는지 아직도 모르겠다..

'실습 > 리눅스 커널' 카테고리의 다른 글

디바이스 드라이버의 동작  (0) 2021.02.08
Major, Minor #  (0) 2021.02.08
DMA 처리  (0) 2021.02.08
Memory Mapping  (0) 2021.02.08
인터럽트 (Interrupt) 처리  (0) 2021.02.08