lcd驱动采用设备-总线-驱动的模型
我们要写的就是向总线注册驱动,然后把对lcd的一系列操作及信息全部放到fb_info中去,然后把fb_info结构体放到数组中去,当device有和driver同名时,device的open、write、ioctal等操作先到fbmem.c中去,fbmen.c相当于一个中转站,把对设备的操作通过次设备号,中转到数组registered_fb中的某一项。
所以说,lcd还是设备总线驱动的模型,系统把风我们要写的驱动拆分成两部分固定的模式,一部分在fbmem.c中,它是最主要的框架,也是一个中转站,另一部分在s3c2410fb.c中,它首先注册了个platform_driver驱动平台,及平台的一系列相关操作,构造了fb_info结构体,然后调用了register,把结构体注册到数组中去。
为什么对lcd的open、write、ioctal总会从fbmem.c开始?
我们要写的就是向总线注册驱动,然后把对lcd的一系列操作及信息全部放到fb_info中去,然后把fb_info结构体放到数组中去,当device有和driver同名时,device的open、write、ioctal等操作先到fbmem.c中去,fbmen.c相当于一个中转站,把对设备的操作通过次设备号,中转到数组registered_fb中的某一项。
所以说,lcd还是设备总线驱动的模型,系统把风我们要写的驱动拆分成两部分固定的模式,一部分在fbmem.c中,它是最主要的框架,也是一个中转站,另一部分在s3c2410fb.c中,它首先注册了个platform_driver驱动平台,及平台的一系列相关操作,构造了fb_info结构体,然后调用了register,把结构体注册到数组中去。
为什么对lcd的open、write、ioctal总会从fbmem.c开始?
那是因为在此文件中,register_chrdev(FB_MAJOR,"fb",&fb_fops),fb_fops中起中转作用,此操作绑定了主设备号,所以,对lcd的所有操作,总是从此文件开始。另外一个文件s3c2410fb.c的作用就是注册个平台驱动,及一系列真正的操作,根据驱动的名称匹配设备的名称。
我们要做的工作就是写一个fb_info结构体,注册个platform_driver平台,把fb_info结构体注册到数组中即可,然后在device中,要是有和driver同名的即可使用。