📄 hi3120.c
字号:
gpio_i2c_write(I2C_HI3120,0x80,(data_temp & 0x07)); /*********BT656_720x576I50_TO_800x600P60**********************/ /* chip reset (4)*/ /* reset each module */ gpio_i2c_write(I2C_HI3120,0xff,0x00); gpio_i2c_write(I2C_HI3120,0x10,0x0f); gpio_i2c_write(I2C_HI3120,0x0f,0x10); gpio_i2c_write(I2C_HI3120,0x0f,0x00); /* clock set(8)*/ gpio_i2c_write(I2C_HI3120,0xff,0x00); gpio_i2c_write(I2C_HI3120,0x00,0x06); gpio_i2c_write(I2C_HI3120,0x01,0x00); gpio_i2c_write(I2C_HI3120,0x03,0x08); gpio_i2c_write(I2C_HI3120,0x04,0x00); gpio_i2c_write(I2C_HI3120,0xff,0x00); gpio_i2c_write(I2C_HI3120,0x06,0x03); gpio_i2c_write(I2C_HI3120,0x07,0x01); /* VO output format(4) */ gpio_i2c_write(I2C_HI3120,0xff,0x01); gpio_i2c_write(I2C_HI3120,0x80,0x00); gpio_i2c_write(I2C_HI3120,0x81,0x40); gpio_i2c_write(I2C_HI3120,0x82,0x0c); /* VO window */ gpio_i2c_write(I2C_HI3120,0xd1,0x04); gpio_i2c_write(I2C_HI3120,0xd0,0x20); gpio_i2c_write(I2C_HI3120,0xd3,0x02); gpio_i2c_write(I2C_HI3120,0xd2,0x74); gpio_i2c_write(I2C_HI3120,0xd5,0x00); gpio_i2c_write(I2C_HI3120,0xd4,0xd8); gpio_i2c_write(I2C_HI3120,0xd7,0x03); gpio_i2c_write(I2C_HI3120,0xd6,0xf8); gpio_i2c_write(I2C_HI3120,0xd9,0x00); gpio_i2c_write(I2C_HI3120,0xd8,0x1b); gpio_i2c_write(I2C_HI3120,0xdb,0x02); gpio_i2c_write(I2C_HI3120,0xda,0x73); gpio_i2c_write(I2C_HI3120,0xdd,0x00); gpio_i2c_write(I2C_HI3120,0xdc,0xd8); gpio_i2c_write(I2C_HI3120,0xdf,0x03); gpio_i2c_write(I2C_HI3120,0xde,0xf8); gpio_i2c_write(I2C_HI3120,0xe1,0x00); gpio_i2c_write(I2C_HI3120,0xe0,0x1b); gpio_i2c_write(I2C_HI3120,0xe3,0x02); gpio_i2c_write(I2C_HI3120,0xe2,0x73); /* VI clock reset(5)*/ gpio_i2c_write(I2C_HI3120,0xff,0x00); gpio_i2c_write(I2C_HI3120,0x10,0x0e); gpio_i2c_write(I2C_HI3120,0x0f,0x00); gpio_i2c_write(I2C_HI3120,0x0f,0x00); /* clock set(8)*/ gpio_i2c_write(I2C_HI3120,0xff,0x00); gpio_i2c_write(I2C_HI3120,0x00,0x06); gpio_i2c_write(I2C_HI3120,0x01,0x00); gpio_i2c_write(I2C_HI3120,0x03,0x08); gpio_i2c_write(I2C_HI3120,0x04,0x00); gpio_i2c_write(I2C_HI3120,0xff,0x00); gpio_i2c_write(I2C_HI3120,0x06,0x03); gpio_i2c_write(I2C_HI3120,0x07,0x01); /* video format change flag bit = 1 (2) */ gpio_i2c_write(I2C_HI3120,0xff,0x01); gpio_i2c_write(I2C_HI3120,0x82,0x2c); /* Input catch window and format(10)*/ gpio_i2c_write(I2C_HI3120,0x00,0x92); gpio_i2c_write(I2C_HI3120,0x01,0x11); gpio_i2c_write(I2C_HI3120,0x03,0x00); gpio_i2c_write(I2C_HI3120,0x02,0x22); gpio_i2c_write(I2C_HI3120,0x05,0x02); gpio_i2c_write(I2C_HI3120,0x04,0xaa); gpio_i2c_write(I2C_HI3120,0x07,0x00); gpio_i2c_write(I2C_HI3120,0x06,0x07); gpio_i2c_write(I2C_HI3120,0x09,0x01); gpio_i2c_write(I2C_HI3120,0x08,0x19); /* DNR (6) */ gpio_i2c_write(I2C_HI3120,0xff,0x00); gpio_i2c_write(I2C_HI3120,0x20,0x00); gpio_i2c_write(I2C_HI3120,0x21,0x24); gpio_i2c_write(I2C_HI3120,0x22,0x02); gpio_i2c_write(I2C_HI3120,0x23,0x88); gpio_i2c_write(I2C_HI3120,0x24,0x02); /* SDRAM control(16)*/ gpio_i2c_write(I2C_HI3120,0x80,0x24); gpio_i2c_write(I2C_HI3120,0x81,0x02); gpio_i2c_write(I2C_HI3120,0x82,0x88); gpio_i2c_write(I2C_HI3120,0x83,0x02); gpio_i2c_write(I2C_HI3120,0x84,0x24); gpio_i2c_write(I2C_HI3120,0x85,0x02); gpio_i2c_write(I2C_HI3120,0x86,0x88); gpio_i2c_write(I2C_HI3120,0x87,0x02); gpio_i2c_write(I2C_HI3120,0x88,0x33); gpio_i2c_write(I2C_HI3120,0x89,0x00); gpio_i2c_write(I2C_HI3120,0x8a,0x07); gpio_i2c_write(I2C_HI3120,0x8b,0x67); gpio_i2c_write(I2C_HI3120,0x8c,0x2b); gpio_i2c_write(I2C_HI3120,0x8d,0x64); gpio_i2c_write(I2C_HI3120,0x8e,0x05); gpio_i2c_write(I2C_HI3120,0x8f,0x00); /* ITOP parameter(5)*/ gpio_i2c_write(I2C_HI3120,0x40,0x00); gpio_i2c_write(I2C_HI3120,0x42,0x02); gpio_i2c_write(I2C_HI3120,0x41,0x88); gpio_i2c_write(I2C_HI3120,0x44,0x01); gpio_i2c_write(I2C_HI3120,0x43,0x12); /* SCALE parameter(53)*/ gpio_i2c_write(I2C_HI3120,0xff,0x02); gpio_i2c_write(I2C_HI3120,0x83,0x00); gpio_i2c_write(I2C_HI3120,0x84,0xf4); gpio_i2c_write(I2C_HI3120,0x85,0x0c); gpio_i2c_write(I2C_HI3120,0x86,0xf4); gpio_i2c_write(I2C_HI3120,0x87,0x0c); gpio_i2c_write(I2C_HI3120,0x88,0xf4); gpio_i2c_write(I2C_HI3120,0x89,0x0c); gpio_i2c_write(I2C_HI3120,0x8a,0xf4); gpio_i2c_write(I2C_HI3120,0x8b,0x0c); gpio_i2c_write(I2C_HI3120,0x8c,0xf4); gpio_i2c_write(I2C_HI3120,0x8d,0x0c); gpio_i2c_write(I2C_HI3120,0x8e,0x9f); gpio_i2c_write(I2C_HI3120,0x8f,0x00); gpio_i2c_write(I2C_HI3120,0x90,0x3f); gpio_i2c_write(I2C_HI3120,0x91,0x01); gpio_i2c_write(I2C_HI3120,0x92,0xdf); gpio_i2c_write(I2C_HI3120,0x93,0x01); gpio_i2c_write(I2C_HI3120,0x94,0x7f); gpio_i2c_write(I2C_HI3120,0x95,0x02); gpio_i2c_write(I2C_HI3120,0x96,0x1e); gpio_i2c_write(I2C_HI3120,0x97,0x03); gpio_i2c_write(I2C_HI3120,0x98,0x87); gpio_i2c_write(I2C_HI3120,0x99,0x02); gpio_i2c_write(I2C_HI3120,0x9a,0x9c); gpio_i2c_write(I2C_HI3120,0x9b,0x0e); gpio_i2c_write(I2C_HI3120,0x9c,0x9c); gpio_i2c_write(I2C_HI3120,0x9d,0x0e); gpio_i2c_write(I2C_HI3120,0x9e,0x9c); gpio_i2c_write(I2C_HI3120,0x9f,0x0e); gpio_i2c_write(I2C_HI3120,0xa0,0x9c); gpio_i2c_write(I2C_HI3120,0xa1,0x0e); gpio_i2c_write(I2C_HI3120,0xa2,0x9c); gpio_i2c_write(I2C_HI3120,0xa3,0x0e); gpio_i2c_write(I2C_HI3120,0xa4,0x77); gpio_i2c_write(I2C_HI3120,0xa5,0x00); gpio_i2c_write(I2C_HI3120,0xa6,0xef); gpio_i2c_write(I2C_HI3120,0xa7,0x00); gpio_i2c_write(I2C_HI3120,0xa8,0x67); gpio_i2c_write(I2C_HI3120,0xa9,0x01); gpio_i2c_write(I2C_HI3120,0xaa,0xdf); gpio_i2c_write(I2C_HI3120,0xab,0x01); gpio_i2c_write(I2C_HI3120,0xac,0x57); gpio_i2c_write(I2C_HI3120,0xad,0x02); gpio_i2c_write(I2C_HI3120,0xae,0x23); gpio_i2c_write(I2C_HI3120,0xaf,0x02); gpio_i2c_write(I2C_HI3120,0xbf,0xff); gpio_i2c_write(I2C_HI3120,0xc0,0x00); gpio_i2c_write(I2C_HI3120,0xc1,0x00); gpio_i2c_write(I2C_HI3120,0xc2,0x00); gpio_i2c_write(I2C_HI3120,0xc3,0x00); gpio_i2c_write(I2C_HI3120,0xc4,0x00); gpio_i2c_write(I2C_HI3120,0xc5,0x00); /* clock reset(4) */ gpio_i2c_write(I2C_HI3120,0xff,0x00); gpio_i2c_write(I2C_HI3120,0xff,0x00); gpio_i2c_write(I2C_HI3120,0x10,0x00); gpio_i2c_write(I2C_HI3120,0xff,0x00); /* video foramt is not change flag bit = 0 (3) */ gpio_i2c_write(I2C_HI3120,0xff,0x01); //gpio_i2c_write(I2C_HI3120,0x01,0x13); gpio_i2c_write(I2C_HI3120,0x01,0x12); gpio_i2c_write(I2C_HI3120,0x82,0x0c); } static int hi3120_open(struct inode * inode, struct file * file){ return 0; } /* *Close device, Do nothing! */static int hi3120_close(struct inode *inode ,struct file *file){ return 0;} static int hi3120_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg){ unsigned int __user *argp = (unsigned int __user *)arg; unsigned int temp; if(copy_from_user(&temp,argp,sizeof(temp))) { return -EFAULT; } return 0; } /* * The various file operations we support. */ static struct file_operations hi3120_fops = { .owner = THIS_MODULE, .ioctl = hi3120_ioctl, .open = hi3120_open, .release = hi3120_close}; static struct miscdevice hi3120_dev = { MISC_DYNAMIC_MINOR, "hi3120", &hi3120_fops,}; static int hi3120_device_init(void){ /* inite codec configs.*/ unsigned char temp = 0; gpio_i2c_write(I2C_HI3120,0xff,0x00); temp = gpio_i2c_read(I2C_HI3120,0x00); gpio_i2c_write(I2C_HI3120,0x00,0xfe); if( gpio_i2c_read(I2C_HI3120,0x00) != 0xfe) { printk("init hi3120 error"); return -1; } gpio_i2c_write(I2C_HI3120,0x00,temp); hi3120_reset(); return 0;} DECLARE_KCOM_GPIO_I2C();static int __init hi3120_init(void){ unsigned int ret = 0; ret = KCOM_GPIO_I2C_INIT(); if(ret) { printk("GPIO I2C module is not load.\n"); return -1; } ret = misc_register(&hi3120_dev); if(ret) { KCOM_GPIO_I2C_EXIT(); printk("could not register hi3120 devices. \n"); return ret; } if(hi3120_device_init()<0) { misc_deregister(&hi3120_dev); KCOM_GPIO_I2C_EXIT(); printk("hi3120 driver init fail for device init error!\n"); return -1; } printk("hi3120 driver init successful!\n"); return ret; } static void __exit hi3120_exit(void){ misc_deregister(&hi3120_dev); printk("deregister hi3120"); KCOM_GPIO_I2C_EXIT();} module_init(hi3120_init);module_exit(hi3120_exit); #ifdef MODULE#include <linux/compile.h>#endif MODULE_INFO(build, UTS_VERSION);MODULE_LICENSE("GPL");MODULE_AUTHOR("hisilicon");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -