一、设备注册(针对设备文件 mach-smdkv110.c)
1、针对设备信息打开目录:/opt/android-kernel-samsung-dev/arch/arm/mach-s5pv210#
gedit mach-smdkv110.c &
添加头文件:
#include <linux/spi/devspi.h> // devspi.h 为自己命名,需与后续对应。
2、在内核/opt/android-kernel-samsung-dev/include/linux/spi 目录下创建文件 devspi.h (命令
gedit devspi.h &),编写头文件程序如下:
#ifndef __SPIDEV_H__
#define __SPIDEV_H__
#include <linux/spi/spi.h>
struct spidev_data{
unsigned long oscillator_frequency; //晶振频率,用于设备产生时钟信号
unsigned long irq_flags; //中断标志位
int (*board_specific_setup)(struct spi_device *spi);
int (*transceiver_enable)(int enable); //收发使能
int (*power_enable) (int enable); //电源使能
};
#endif /* ___SPIDEV_H__*/
保存。
注:如果不使用中断,头文件可以去掉,但需设置晶振频率,因为采用 SPI 串口通讯只需对应
GPB 寄存器配置,加头文件的目的是设置晶振频率 oscillator_frequency = 8000000,给设备
时钟信号和设置中断使能位,以实现中断。
/*****************************
3、打开目录:/opt/android-kernel-samsung-dev/arch/arm/mach-s5pv210#
gedit mach-smdkv110.c &
/**************************** started by uidp4146 *****************************/
static int spidev_ioSetup(struct spi_device *spi)
{
printk("<6>""uidp3858: setup gpio pins CS and External Int");
s3c_gpio_setpull(S3C64XX_GPC(3), S3C_GPIO_PULL_NONE);
s3c_gpio_cfgpin(S3C64XX_GPC(3), S3C_GPIO_OUTPUT);
return 0;
}