t31-t40 drivers moved to opensdk (#841)

pull/842/head
cronyx 2023-06-04 18:25:41 +03:00 committed by GitHub
parent b975e2f1d2
commit b583d80644
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 21 additions and 1038 deletions

View File

@ -58,6 +58,7 @@ BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR_OPENIPC=y BR2_PACKAGE_DROPBEAR_OPENIPC=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set # BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_UBOOT_TOOLS=y BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_INGENIC_OPENSDK=y
BR2_PACKAGE_INGENIC_OSDRV_T31=y BR2_PACKAGE_INGENIC_OSDRV_T31=y
# BR2_PACKAGE_HASERL is not set # BR2_PACKAGE_HASERL is not set
# BR2_PACKAGE_HISI_GPIO is not set # BR2_PACKAGE_HISI_GPIO is not set

View File

@ -58,6 +58,7 @@ BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR_OPENIPC=y BR2_PACKAGE_DROPBEAR_OPENIPC=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set # BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_UBOOT_TOOLS=y BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_INGENIC_OPENSDK=y
BR2_PACKAGE_INGENIC_OSDRV_T31=y BR2_PACKAGE_INGENIC_OSDRV_T31=y
BR2_PACKAGE_HASERL=y BR2_PACKAGE_HASERL=y
# BR2_PACKAGE_HISI_GPIO is not set # BR2_PACKAGE_HISI_GPIO is not set

View File

@ -58,6 +58,7 @@ BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR_OPENIPC=y BR2_PACKAGE_DROPBEAR_OPENIPC=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set # BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_UBOOT_TOOLS=y BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_INGENIC_OPENSDK=y
BR2_PACKAGE_INGENIC_OSDRV_T31=y BR2_PACKAGE_INGENIC_OSDRV_T31=y
BR2_PACKAGE_HASERL=y BR2_PACKAGE_HASERL=y
# BR2_PACKAGE_HISI_GPIO is not set # BR2_PACKAGE_HISI_GPIO is not set

View File

@ -58,6 +58,7 @@ BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR_OPENIPC=y BR2_PACKAGE_DROPBEAR_OPENIPC=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set # BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_UBOOT_TOOLS=y BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_INGENIC_OPENSDK=y
BR2_PACKAGE_INGENIC_OSDRV_T40=y BR2_PACKAGE_INGENIC_OSDRV_T40=y
BR2_PACKAGE_HASERL=y BR2_PACKAGE_HASERL=y
# BR2_PACKAGE_HISI_GPIO is not set # BR2_PACKAGE_HISI_GPIO is not set

View File

@ -58,6 +58,7 @@ BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR_OPENIPC=y BR2_PACKAGE_DROPBEAR_OPENIPC=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set # BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_UBOOT_TOOLS=y BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_INGENIC_OPENSDK=y
BR2_PACKAGE_INGENIC_OSDRV_T40=y BR2_PACKAGE_INGENIC_OSDRV_T40=y
BR2_PACKAGE_HASERL=y BR2_PACKAGE_HASERL=y
# BR2_PACKAGE_HISI_GPIO is not set # BR2_PACKAGE_HISI_GPIO is not set

View File

@ -4,17 +4,14 @@
# #
################################################################################ ################################################################################
INGENIC_OPENSDK_VERSION = $(shell git ls-remote https://github.com/OpenIPC/openingenic master | awk '{ print $$1 }')
INGENIC_OPENSDK_SITE = $(call github,openipc,openingenic,$(INGENIC_OPENSDK_VERSION))
INGENIC_OPENSDK_LICENSE = GPL-3.0 INGENIC_OPENSDK_LICENSE = GPL-3.0
INGENIC_OPENSDK_LICENSE_FILES = LICENSE INGENIC_OPENSDK_LICENSE_FILES = LICENSE
define INGENIC_OPENSDK_EXTRACT_CMDS INGENIC_OPENSDK_MODULE_SUBDIRS = kernel
cp $(INGENIC_OPENSDK_PKGDIR)/src/kernel/* $(@D)/
endef
INGENIC_OPENSDK_MODULE_MAKE_OPTS = \ INGENIC_OPENSDK_MODULE_MAKE_OPTS = \
CONFIG_GPIO=m \ SOC=$(OPENIPC_MODEL)
KVER=$(LINUX_VERSION_PROBED) \
KSRC=$(LINUX_DIR)
$(eval $(kernel-module)) $(eval $(kernel-module))
$(eval $(generic-package)) $(eval $(generic-package))

View File

@ -1,20 +0,0 @@
CROSS_COMPILE ?= mips-linux-gnu-
ifeq (${ISVP_ENV_KERNEL_DIR}, )
ISVP_ENV_KERNEL_DIR = ../../../kernel
endif
KDIR := ${ISVP_ENV_KERNEL_DIR}
MODULE_NAME := gpio
all: modules
.PHONY: modules clean
obj-m := $(MODULE_NAME).o
modules:
@$(MAKE) -C $(KDIR) M=$(shell pwd) $@
clean:
@rm -rf *.o *~ .depend .*.cmd *.mod.c .tmp_versions *.ko *.symvers modules.order
@rm -f gpio

View File

@ -1,79 +0,0 @@
#include <jz_proc.h>
#include <linux/proc_fs.h>
#include <linux/gpio.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("OpenIPC");
MODULE_DESCRIPTION("Ingenic GPIO Claimer");
static struct proc_dir_entry *claim_proc;
int claim_gpio(int gpio) {
int ret = 0;
pr_debug("GPIO[%i] Requesting...\n", gpio);
if (!gpio_is_valid(gpio)) {
pr_err("GPIO[%i] is not valid\n", gpio);
return -1;
}
if (gpio_request(gpio, 0) > 0)
return -1;
pr_debug("GPIO[%i] Setting direction...\n", gpio);
gpio_direction_output(gpio, 0);
pr_debug("GPIO[%i] Exporting...\n", gpio);
gpio_export(gpio, true);
return 0;
}
ssize_t claim_proc_write(struct file *filp, const char *buf, size_t len,
loff_t *off) {
int ret = 0;
char cmd[4] = {0};
uint32_t addr, data, datalen;
if (len > 4) {
return -EFAULT;
}
if (copy_from_user(cmd, buf, len)) {
return -EFAULT;
}
int gpio = simple_strtoul(cmd, NULL, 0);
ret = claim_gpio(gpio);
if (ret) {
pr_err("GPIO[%i] Error %i \n", gpio, ret);
return -EFAULT;
} else {
pr_debug("GPIO[%i] Claiming...\n", gpio);
}
return len;
}
static const struct file_operations claim_proc_fops = {
.owner = THIS_MODULE,
.write = claim_proc_write,
};
static __init int init_claim(void) {
claim_proc = proc_mkdir("jz/claim", 0);
if (!claim_proc) {
printk("err: jz_proc_mkdir failed\n");
}
proc_create_data("gpio", S_IRUGO, claim_proc, &claim_proc_fops, NULL);
printk("Ingenic GPIO claim module (c) OpenIPC.org\n");
return 0;
}
static __exit void exit_claim(void) { proc_remove(claim_proc); }
module_init(init_claim);
module_exit(exit_claim);

View File

@ -1,25 +0,0 @@
CROSS_COMPILE ?= mips-linux-gnu-
KDIR := ${ISVP_ENV_KERNEL_DIR}
MODULE_NAME := sinfo
all: modules
.PHONY: modules clean
$(MODULE_NAME)-objs := sensor_info.o
obj-m := $(MODULE_NAME).o
modules:
@if test "$(KDIR)" = ""; \
then \
echo "**************************************"; \
echo "Please run env_setup.sh at top of isvp"; \
echo "**************************************"; \
fi
@$(MAKE) -C $(KDIR) M=$(shell pwd) $@
sample_sinfo:
mips-linux-gnu-gcc sample_sinfo.c -o sample_sinfo
clean:
@rm -rf *.o *~ .depend .*.cmd *.mod.c .tmp_versions *.ko *.symvers modules.order
@rm -f sample_sinfo

View File

@ -1,5 +0,0 @@
Two ways to get sensor info
1. open /dev/sinfo; ioctl TOCTL_SINFO_GET
2. echo 1 >/proc/jz/sinfo/info; cat /proc/jz/sinfo/info

View File

@ -1,148 +0,0 @@
/*
* sample_sinfo.c
*
* two ways to get sensor info
*
* 1. open /dev/sinfo; ioctl TOCTL_SINFO_GET
*
* 2. echo 1 >/proc/jz/sinfo/info; cat /proc/jz/sinfo/info
*
* */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#define SENSOR_INFO_IOC_MAGIC 'S'
#define IOCTL_SINFO_GET _IO(SENSOR_INFO_IOC_MAGIC, 100)
#define IOCTL_SINFO_FLASH _IO(SENSOR_INFO_IOC_MAGIC, 101)
#define SENSOR_TYPE_INVALID -1
typedef struct SENSOR_INFO_S
{
unsigned char *name;
} SENSOR_INFO_T;
SENSOR_INFO_T g_sinfo[] =
{
{"ov9712"},
{"ov9732"},
{"ov9750"},
{"jxh42"},
{"sc1035"},
{"sc1135"},
{"sc1045"},
{"sc1145"},
{"ar0130"},
{"jxh61"},
{"gc2083"},
{"gc1024"},
{"gc1064"},
{"gc2023"},
{"bf3115"},
{"imx225"},
{"ov2710"},
{"imx323"},
{"sc2135"},
{"sp1409"},
{"jxh62"},
{"bg0806"},
{"ov4689"},
{"jxf22"},
{"imx322"},
{"imx307"},
{"imx291"},
{"ov2735"},
{"sc3035"},
{"ar0237"},
{"sc2145"},
{"jxh65"},
{"sc2300"},
{"ov2735b"},
{"jxv01"},
{"ps5230"},
{"ps5250"},
{"ov2718"},
{"ov2732"},
{"sc2235"},
{"jxk02"},
{"ov7740"},
{"hm2140"},
{"gc2033"},
{"jxf28"},
{"os02b10"},
{"os05a10"},
{"sc2232"},
{"sc2232h"},
{"sc2230"},
{"sc4236"},
{"sc1245"},
{"sc1245a"},
{"gc1034"},
{"sc1235"},
{"jxf23"},
{"ps5270"},
{"sp140a"},
{"sc2310"},
{"hm2131"},
{"mis2003"},
{"jxk03"},
{"sc5235"},
{"ov5648"},
{"ps5280"},
{"jxf23s"},
{"gc2053"},
{"sc4335"},
{"ps5260"},
{"os04b10"},
{"jxk05"},
{"jxh63"},
{"sc2335"},
{"jxf37"},
{"gc4653"},
{"c23a98"},
{"sc3335"},
{"sc3235"},
{"sc200ai"},
{"sc401ai"},
{"sc500ai"},
{"jxq03"},
{"jxq03p"},
{"sc3338"},
{"imx334"},
{"imx335"},
{"imx415"},
};
int main(int argc,char **argv)
{
int ret = 0;
int fd = 0;
int data = -1;
/* open device file */
fd = open("/dev/sinfo", O_RDWR);
if (-1 == fd) {
printf("err: open failed\n");
return -1;
}
/* iotcl to get sensor info. */
/* cmd is IOCTL_SINFO_GET, data note sensor type according to SENSOR_TYPE */
ret = ioctl(fd,IOCTL_SINFO_GET,&data);
if (0 != ret) {
printf("err: ioctl failed\n");
return ret;
}
if (SENSOR_TYPE_INVALID == data)
printf("##### sensor not found\n");
else
printf("##### sensor : %s\n", g_sinfo[data].name);
/* close device file */
close(fd);
return 0;
}

View File

@ -1,700 +0,0 @@
/*
* sensor_info.c
*
* Copyright (C) 2012 Ingenic Semiconductor Co., Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/delay.h>
#include <linux/gpio.h>
#include <linux/clk.h>
#include <linux/cdev.h>
#include <linux/fs.h>
#include <linux/unistd.h>
#include <linux/types.h>
#include <linux/ioctl.h>
#include <linux/miscdevice.h>
#include <linux/mutex.h>
#include <jz_proc.h>
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <soc/gpio.h>
#ifdef CONFIG_SOC_T40
static unsigned i2c_adapter_nr = 1;
#else
static unsigned i2c_adapter_nr = 0;
#endif
module_param(i2c_adapter_nr, uint, 0644);
MODULE_PARM_DESC(i2c_adapter_nr, "sensor used i2c_adapter nr");
#ifdef CONFIG_SOC_T40
static int reset_gpio = GPIO_PC(27);
#else
static int reset_gpio = GPIO_PA(18);
#endif
module_param(reset_gpio, int, S_IRUGO);
MODULE_PARM_DESC(reset_gpio, "Reset GPIO NUM");
static int pwdn_gpio = -1;
module_param(pwdn_gpio, int, S_IRUGO);
MODULE_PARM_DESC(pwdn_gpio, "Power down GPIO NUM");
#ifdef CONFIG_SOC_T40
static int cim1_gpio = GPIO_PC(30);
module_param(cim1_gpio, int, S_IRUGO);
MODULE_PARM_DESC(cim1_gpio, "Cim1 GPIO NUM");
#endif
#define SENSOR_INFO_IOC_MAGIC 'S'
#define IOCTL_SINFO_GET _IO(SENSOR_INFO_IOC_MAGIC, 100)
#define IOCTL_SINFO_FLASH _IO(SENSOR_INFO_IOC_MAGIC, 101)
#define SENSOR_TYPE_INVALID -1
#define I2C_WRITE 0
#define I2C_READ 1
struct i2c_trans {
uint32_t addr;
uint32_t r_w;
uint32_t data;
uint32_t datalen;
};
typedef struct SENSOR_INFO_S
{
uint8_t *name;
uint8_t i2c_addr;
uint8_t *clk_name;
uint32_t clk;
uint32_t id_value[8];
uint32_t id_value_len;
uint32_t id_addr[8];
uint32_t id_addr_len;
uint8_t id_cnt;
struct i2c_adapter *adap;
} SENSOR_INFO_T, *SENSOR_INFO_P;
SENSOR_INFO_T g_sinfo[] =
{
{"ov9712", 0x30, "cgu_cim", 24000000, {0x97, 0x11}, 1, {0xa, 0xb}, 1, 2, NULL},
{"ov9732", 0x36, "cgu_cim", 24000000, {0x97, 0x32}, 1, {0x300a, 0x300b}, 2, 2, NULL},
{"ov9750", 0x36, "cgu_cim", 24000000, {0x97, 0x50}, 1, {0x300b, 0x300c}, 2, 2, NULL},
{"jxh42", 0x30, "cgu_cim", 24000000, {0xa0, 0x42, 0x81}, 1, {0xa, 0xb, 0x9}, 1, 3, NULL},
{"sc1035", 0x30, "cgu_cim", 24000000, {0xf0, 0x00}, 1, {0x580b, 0x3c05}, 2, 2, NULL},
{"sc1135", 0x30, "cgu_cim", 24000000, {0x00, 0x35}, 1, {0x580b, 0x2148}, 2, 2, NULL},
{"sc1045", 0x30, "cgu_cim", 24000000, {0x10, 0x45}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"sc1145", 0x30, "cgu_cim", 24000000, {0x11, 0x45}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"ar0130", 0x10, "cgu_cim", 24000000, {0x2402}, 2, {0x3000}, 2, 1, NULL},
{"jxh61", 0x30, "cgu_cim", 24000000, {0xa0, 0x42, 0x3}, 1, {0xa, 0xb, 0x9}, 1, 3, NULL},
{"gc2083", 0x37, "cgu_cim", 24000000, {0x20, 0x83}, 1, {0x3f0, 0x3f1}, 2, 2, NULL},
{"gc1024", 0x3c, "cgu_cim", 24000000, {0x10, 0x04}, 1, {0xf0, 0xf1}, 1, 2, NULL},
{"gc1064", 0x3c, "cgu_cim", 24000000, {0x10, 0x24}, 1, {0xf0, 0xf1}, 1, 2, NULL},
{"gc2023", 0x37, "cgu_cim", 24000000, {0x20, 0x23}, 1, {0xf0, 0xf1}, 1, 2, NULL},
{"bf3115", 0x6e, "cgu_cim", 24000000, {0x31, 0x16}, 1, {0xfc, 0xfd}, 1, 2, NULL},
{"imx225", 0x1a, "cgu_cim", 24000000, {0x10, 0x01}, 1, {0x3004, 0x3013}, 2, 2, NULL},
{"ov2710", 0x36, "cgu_cim", 24000000, {0x27, 0x10}, 1, {0x300a, 0x300b}, 2, 2, NULL},
{"imx323", 0x1a, "cgu_cim", 37125000, {0x50, 0x0}, 1, {0x301c, 0x301d}, 2, 2, NULL},
{"sc2135", 0x30, "cgu_cim", 24000000, {0x21, 0x35}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"sp1409", 0x34, "cgu_cim", 24000000, {0x14, 0x09}, 1, {0x04, 0x05}, 1, 2, NULL},
{"jxh62", 0x30, "cgu_cim", 24000000, {0xa0, 0x62}, 1, {0xa, 0xb}, 1, 2, NULL},
{"bg0806", 0x32, "cgu_cim", 24000000, {0x08, 0x06}, 1, {0x0000, 0x0001}, 2, 2, NULL},
{"ov4689", 0x36, "cgu_cim", 24000000, {0x46, 0x88}, 1, {0x300a, 0x300b}, 2, 2, NULL},
{"jxf22", 0x40, "cgu_cim", 24000000, {0x0f, 0x22}, 1, {0xa, 0xb}, 1, 2, NULL},
{"imx322", 0x1a, "cgu_cim", 37125000, {0x50, 0x0}, 1, {0x301c, 0x301d}, 2, 2, NULL},
{"imx307", 0x1a, "cgu_cim", 37125000, {0xA0, 0xB2}, 1, {0x3008, 0x301e}, 2, 2, NULL},
{"imx291", 0x1a, "cgu_cim", 37125000, {0xA0, 0xB2}, 1, {0x3008, 0x301e}, 2, 2, NULL},
{"ov2735", 0x3c, "cgu_cim", 24000000, {0x27, 0x35, 0x05}, 1, {0x02, 0x03, 0x04}, 1, 3, NULL},
{"sc3035", 0x30, "cgu_cim", 24000000, {0x30, 0x35}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"ar0237", 0x10, "cgu_cim", 27000000, {0x0256}, 2, {0x3000}, 2, 1, NULL},
{"sc2145", 0x30, "cgu_cim", 24000000, {0x21, 0x45}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"jxh65", 0x30, "cgu_cim", 24000000, {0x0a, 0x65}, 1, {0xa, 0xb}, 1, 2, NULL},
{"sc2300", 0x30, "cgu_cim", 24000000, {0x23, 0x00}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"ov2735b", 0x3c, "cgu_cim", 24000000, {0x27, 0x35, 0x6, 0x7}, 1, {0x02, 0x03, 0x04, 0x04}, 1, 4, NULL},
{"jxv01", 0x21, "cgu_cim", 27000000, {0x0e, 0x04}, 1, {0xa, 0xb}, 1, 2, NULL},
{"ps5230", 0x48, "cgu_cim", 24000000, {0x52, 0x30}, 1, {0x00, 0x01}, 1, 2, NULL},
{"ps5250", 0x48, "cgu_cim", 24000000, {0x52, 0x50}, 1, {0x00, 0x01}, 1, 2, NULL},
{"ov2718", 0x36, "cgu_cim", 24000000, {0x27, 0x70}, 1, {0x300a, 0x300b}, 2, 2, NULL},
{"ov2732", 0x36, "cgu_cim", 24000000, {0x00, 0x27, 0x32}, 1, {0x300a, 0x300b, 0x300c}, 2, 3, NULL},
{"sc2235", 0x30, "cgu_cim", 24000000, {0x22, 0x35}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"jxk02", 0x40, "cgu_cim", 24000000, {0x04, 0x03}, 1, {0xa, 0xb}, 1, 2, NULL},
{"ov7740", 0x21, "cgu_cim", 24000000, {0x77, 0x42}, 1, {0x0a, 0x0b}, 1, 2, NULL},
{"hm2140", 0x24, "cgu_cim", 24000000, {0x21, 0x40}, 1, {0x0000, 0x0001}, 2, 2, NULL},
{"gc2033", 0x37, "cgu_cim", 24000000, {0x20, 0x33}, 1, {0xf0, 0xf1}, 1, 2, NULL},
{"jxf28", 0x40, "cgu_cim", 24000000, {0x0f, 0x28}, 1, {0xa, 0xb}, 1, 2, NULL},
{"os02b10", 0x3c, "cgu_cim", 24000000, {0x23, 0x08}, 1, {0x02, 0x03}, 1, 2, NULL},
{"os05a10", 0x36, "cgu_cim", 24000000, {0x53, 0x05, 0x41}, 1, {0x300a, 0x300b, 0x300c}, 2, 3, NULL},
{"sc2232", 0x30, "cgu_cim", 24000000, {0x22, 0x32, 0x01}, 1, {0x3107, 0x3108, 0x3109}, 2, 3, NULL},
{"sc2232h", 0x30, "cgu_cim", 24000000, {0xcb, 0x07, 0x01}, 1, {0x3107, 0x3108, 0x3109}, 2, 3, NULL},
{"sc2230", 0x30, "cgu_cim", 24000000, {0x22, 0x32, 0x20}, 1, {0x3107, 0x3108, 0x3109}, 2, 3, NULL},
{"sc4236", 0x30, "cgu_cim", 24000000, {0x32, 0x35}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"sc1245", 0x30, "cgu_cim", 24000000, {0x12, 0x45, 0x03}, 1, {0x3107, 0x3108, 0x3020}, 2, 3, NULL},
{"sc1245a", 0x30, "cgu_cim", 24000000, {0x12, 0x45, 0x02}, 1, {0x3107, 0x3108, 0x3020}, 2, 3, NULL},
{"gc1034", 0x21, "cgu_cim", 24000000, {0x10, 0x34}, 1, {0xf0, 0xf1}, 1, 2, NULL},
{"sc1235", 0x30, "cgu_cim", 24000000, {0x12, 0x35}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"jxf23", 0x40, "cgu_cim", 24000000, {0x0f, 0x23}, 1, {0xa, 0xb}, 1, 2, NULL},
{"ps5270", 0x48, "cgu_cim", 24000000, {0x52, 0x70}, 1, {0x00, 0x01}, 1, 2, NULL},
{"sp140a", 0x3c, "cgu_cim", 24000000, {0x14, 0x0a}, 1, {0x02, 0x03}, 1, 2, NULL},
{"sc2310", 0x30, "cgu_cim", 24000000, {0x23, 0x11}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"hm2131", 0x24, "cgu_cim", 24000000, {0x14, 0x0a}, 1, {0x0000, 0x0001}, 2, 2, NULL},
{"mis2003", 0x30, "cgu_cim", 24000000, {0x20, 0x03}, 1, {0x3000, 0x3001}, 2, 2, NULL},
{"jxk03", 0x40, "cgu_cim", 24000000, {0x05, 0x03}, 1, {0xa, 0xb}, 1, 2, NULL},
{"sc5235", 0x30, "cgu_cim", 24000000, {0x52, 0x35}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"ov5648", 0x36, "cgu_cim", 24000000, {0x56, 0x48}, 1, {0x300a, 0x300b}, 2, 2, NULL},
{"ps5280", 0x48, "cgu_cim", 24000000, {0x52, 0x80}, 1, {0x00, 0x01}, 1, 2, NULL},
{"jxf23s", 0x40, "cgu_cim", 24000000, {0x0f, 0x23}, 1, {0xa, 0xb}, 1, 2, NULL},
{"gc2053", 0x37, "cgu_cim", 24000000, {0x20, 0x53}, 1, {0xf0, 0xf1}, 1, 2, NULL},
{"sc4335", 0x30, "cgu_cim", 27000000, {0xcd, 0x01}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"ps5260", 0x48, "cgu_cim", 24000000, {0x52, 0x60}, 1, {0x00, 0x01}, 1, 2, NULL},
{"os04b10", 0x3c, "cgu_cim", 24000000, {0x43, 0x08, 0x01}, 1, {0x02, 0x03, 0x04}, 1, 3, NULL},
{"jxk05", 0x40, "cgu_cim", 24000000, {0x05, 0x05}, 1, {0xa, 0xb}, 1, 2, NULL},
{"jxh63", 0x40, "cgu_cim", 24000000, {0x0a, 0x63}, 1, {0x0a, 0x0b}, 1, 2, NULL},
{"sc2335", 0x30, "cgu_cim", 24000000, {0xcb, 0x14}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"jxf37", 0x40, "cgu_cim", 24000000, {0x0f, 0x37}, 1, {0xa, 0xb}, 1, 2, NULL},
{"gc4653", 0x29, "cgu_cim", 24000000, {0x46, 0x53}, 1, {0x03f0, 0x03f1}, 2, 2, NULL},
{"c23a98", 0x36, "cgu_cim", 24000000, {0x23, 0x98}, 1, {0x0000, 0x0001}, 2, 2, NULL},
{"sc3335", 0x30, "cgu_cim", 24000000, {0xcc, 0x1a}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"sc3235", 0x30, "cgu_cim", 24000000, {0xcc, 0x05}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"sc200ai", 0x30, "cgu_cim", 24000000, {0xcb, 0x1c}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"sc401ai", 0x30, "cgu_cim", 24000000, {0xcd, 0x2e}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"sc500ai", 0x30, "cgu_cim", 24000000, {0xce, 0x1f}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"jxq03", 0x40, "cgu_cim", 24000000, {0x05, 0x07}, 1, {0xa, 0xb}, 1, 2, NULL},
{"jxq03p", 0x40, "cgu_cim", 24000000, {0x08, 0x43}, 1, {0xa, 0xb}, 1, 2, NULL},
{"sc3338", 0x30, "cgu_cim", 24000000, {0xcc, 0x41}, 1, {0x3107, 0x3108}, 2, 2, NULL},
{"imx334", 0x1a, "cgu_cim", 37125000, {0x20, 0x03}, 1, {0x302e, 0x302f}, 2, 2, NULL},
{"imx335", 0x1a, "cgu_cim", 37125000, {0x08, 0x0}, 1, {0x302e, 0x302f}, 2, 2, NULL},
{"imx415", 0x1a, "cgu_cim", 37125000, {0x28, 0x23}, 1, {0x3b00, 0x3b06}, 2, 2, NULL},
};
static int8_t g_sensor_id = -1;
static struct mutex g_mutex;
int sensor_read(SENSOR_INFO_P sinfo, struct i2c_adapter *adap, uint32_t addr, uint32_t *value)
{
int ret;
uint8_t buf[4] = {0};
uint8_t data[4] = {0};
uint8_t rlen = sinfo->id_value_len;
uint8_t wlen = sinfo->id_addr_len;
struct i2c_msg msg[2] = {
[0] = {
.addr = sinfo->i2c_addr,
.flags = 0,
.len = wlen,
.buf = buf,
},
[1] = {
.addr = sinfo->i2c_addr,
.flags = I2C_M_RD,
.len = rlen,
.buf = data,
}
};
if (1 == wlen) {
buf[0] = addr&0xff;
} else if (2 == wlen){
buf[0] = (addr>>8)&0xff;
buf[1] = addr&0xff;
} else if (3 == wlen){
buf[0] = (addr>>16)&0xff;
buf[1] = (addr>>8)&0xff;
buf[2] = addr&0xff;
} else if (4 == wlen){
buf[0] = (addr>>24)&0xff;
buf[1] = (addr>>16)&0xff;
buf[2] = (addr>>8)&0xff;
buf[3] = addr&0xff;
} else {
printk("error: %s,%d wlen = %d\n", __func__, __LINE__, wlen);
}
ret = i2c_transfer(adap, msg, 2);
if (ret > 0) ret = 0;
if (0 != ret)
printk("error: %s,%d ret = %d\n", __func__, __LINE__, ret);
if (1 == rlen) {
*value = data[0];
} else if (2 == rlen){
*value = (data[0]<<8)|data[1];
} else if (3 == rlen){
*value = (data[0]<<16)|(data[1]<<8)|data[2];
} else if (4 == rlen){
*value = (data[0]<<24)|(data[1]<<16)|(data[2]<<8)|data[3];
} else {
printk("error: %s,%d rlen = %d\n", __func__, __LINE__, rlen);
}
printk(" sensor_read: addr=0x%x value = 0x%x\n", addr, *value);
return ret;
}
static int32_t process_one_adapter(struct device *dev, void *data)
{
int32_t ret;
int32_t i = 0;
int32_t j = 0;
struct clk *mclk;
struct i2c_adapter *adap;
uint8_t scnt = sizeof(g_sinfo)/sizeof(g_sinfo[0]);
mutex_lock(&g_mutex);
if (dev->type != &i2c_adapter_type) {
mutex_unlock(&g_mutex);
return 0;
}
adap = to_i2c_adapter(dev);
printk("name : %s nr : %d\n", adap->name, adap->nr);
if (adap->nr != i2c_adapter_nr) {
mutex_unlock(&g_mutex);
return 0;
}
#ifdef CONFIG_SOC_T40
if(cim1_gpio != -1){
ret = gpio_request(cim1_gpio,"cim1");
if(!ret){
jzgpio_set_func((cim1_gpio / 32), GPIO_FUNC_1, 1 << (cim1_gpio % 32));
}
}
#endif
for (i = 0; i < scnt; i++) {
uint8_t idcnt = g_sinfo[i].id_cnt;
#ifdef CONFIG_SOC_T40
g_sinfo[i].clk_name = "div_cim1";
#endif
mclk = clk_get(NULL, g_sinfo[i].clk_name);
if (IS_ERR(mclk)) {
printk("Cannot get sensor input clock cgu_cim\n");
mutex_unlock(&g_mutex);
return PTR_ERR(mclk);
}
clk_set_rate(mclk, g_sinfo[i].clk);
#ifdef CONFIG_SOC_T40
clk_prepare_enable(mclk);
#else
clk_enable(mclk);
#endif
if(reset_gpio != -1){
ret = gpio_request(reset_gpio,"reset");
if(!ret){
gpio_direction_output(reset_gpio, 1);
msleep(20);
gpio_direction_output(reset_gpio, 0);
if(strcmp(g_sinfo[i].name, "sp1409") == 0)
msleep(600);
else{
msleep(20);
gpio_direction_output(reset_gpio, 1);
msleep(20);
}
}else{
printk("gpio requrest fail %d\n",reset_gpio);
}
}
if(pwdn_gpio != -1){
ret = gpio_request(pwdn_gpio,"pwdn");
if(!ret){
gpio_direction_output(pwdn_gpio, 1);
msleep(150);
gpio_direction_output(pwdn_gpio, 0);
if(strcmp(g_sinfo[i].name, "sp1409") == 0)
msleep(600);
else
msleep(10);
}else{
printk("gpio requrest fail %d\n",pwdn_gpio);
}
}
for (j = 0; j < idcnt; j++) {
uint32_t value = 0;
ret = sensor_read(&g_sinfo[i], adap, g_sinfo[i].id_addr[j], &value);
if (0 != ret) {
printk("err sensor read addr = 0x%x, value = 0x%x\n", g_sinfo[i].id_addr[j], value);
break;
}
if(strcmp(g_sinfo[i].name, "ov2735b") == 0 && j == 2){
if (value == g_sinfo[i].id_value[j])
j++;
}
else
if (value != g_sinfo[i].id_value[j])
break;
}
if (-1 != reset_gpio)
gpio_free(reset_gpio);
if (-1 != pwdn_gpio)
gpio_free(pwdn_gpio);
clk_disable(mclk);
clk_put(mclk);
if (j == idcnt) {
printk("info: success sensor find : %s\n", g_sinfo[i].name);
g_sinfo[i].adap = adap;
g_sensor_id = i;
goto end_sensor_find;
}
}
printk("info: failed sensor find\n");
g_sensor_id = -1;
mutex_unlock(&g_mutex);
return 0;
end_sensor_find:
mutex_unlock(&g_mutex);
return 0;
}
static int32_t sensor_open(void)
{
int ret = -1;
struct clk *mclk;
if (-1 == g_sensor_id)
return 0;
mutex_lock(&g_mutex);
#ifdef CONFIG_SOC_T40
g_sinfo[g_sensor_id].clk_name = "div_cim1";
#endif
mclk = clk_get(NULL, g_sinfo[g_sensor_id].clk_name);
if (IS_ERR(mclk)) {
printk("Cannot get sensor input clock cgu_cim\n");
mutex_unlock(&g_mutex);
return PTR_ERR(mclk);
}
clk_set_rate(mclk, g_sinfo[g_sensor_id].clk);
#ifdef CONFIG_SOC_T40
clk_prepare_enable(mclk);
#else
clk_enable(mclk);
#endif
if(reset_gpio != -1){
ret = gpio_request(reset_gpio,"reset");
if(!ret){
gpio_direction_output(reset_gpio, 1);
msleep(20);
gpio_direction_output(reset_gpio, 0);
msleep(20);
gpio_direction_output(reset_gpio, 1);
msleep(20);
}else{
printk("gpio requrest fail %d\n",reset_gpio);
}
}
if(pwdn_gpio != -1){
ret = gpio_request(pwdn_gpio,"pwdn");
if(!ret){
gpio_direction_output(pwdn_gpio, 1);
msleep(150);
gpio_direction_output(pwdn_gpio, 0);
msleep(10);
}else{
printk("gpio requrest fail %d\n",pwdn_gpio);
}
}
mutex_unlock(&g_mutex);
return 0;
}
static int32_t sensor_release(void)
{
struct clk *mclk;
if (-1 == g_sensor_id)
return 0;
mutex_lock(&g_mutex);
mclk = clk_get(NULL, g_sinfo[g_sensor_id].clk_name);
if (IS_ERR(mclk)) {
printk("Cannot get sensor input clock cgu_cim\n");
mutex_unlock(&g_mutex);
return PTR_ERR(mclk);
}
if (-1 != reset_gpio)
gpio_free(reset_gpio);
if (-1 != pwdn_gpio)
gpio_free(pwdn_gpio);
clk_disable(mclk);
clk_put(mclk);
mutex_unlock(&g_mutex);
return 0;
}
static int32_t i2c_read_write(struct device *dev, void *data)
{
int32_t ret;
struct i2c_adapter *adap;
struct i2c_trans *t = data;
uint8_t buf[4] = {0};
uint32_t value = 0;
uint8_t len = t->datalen;
struct i2c_msg msg = {
.addr = t->addr,
.flags = (t->r_w == I2C_WRITE)?0:I2C_M_RD,
.len = len,
.buf = buf,
};
mutex_lock(&g_mutex);
if (dev->type != &i2c_adapter_type) {
mutex_unlock(&g_mutex);
return 0;
}
adap = to_i2c_adapter(dev);
printk("name : %s nr : %d\n", adap->name, adap->nr);
if (adap->nr != i2c_adapter_nr) {
mutex_unlock(&g_mutex);
return 0;
}
if (I2C_WRITE == t->r_w) {
if (1 == len) {
buf[0] = (t->data)&0xff;
} else if (2 == len){
buf[0] = ((t->data)>>8)&0xff;
buf[1] = (t->data)&0xff;
} else if (3 == len){
buf[0] = ((t->data)>>16)&0xff;
buf[1] = ((t->data)>>8)&0xff;
buf[2] = (t->data)&0xff;
} else if (4 == len){
buf[0] = ((t->data)>>24)&0xff;
buf[1] = ((t->data)>>16)&0xff;
buf[2] = ((t->data)>>8)&0xff;
buf[3] = (t->data)&0xff;
} else {
printk("error: %s,%d len = %d\n", __func__, __LINE__, len);
}
}
ret = i2c_transfer(adap, &msg, 1);
if (ret > 0) ret = 0;
if (0 != ret)
printk("error: %s,%d ret = %d\n", __func__, __LINE__, ret);
if (I2C_READ == t->r_w) {
if (1 == len) {
value = buf[0];
} else if (2 == len){
value = (buf[0]<<8)|buf[1];
} else if (3 == len){
value = (buf[0]<<16)|(buf[1]<<8)|buf[2];
} else if (4 == len){
value = (buf[0]<<24)|(buf[1]<<16)|(buf[2]<<8)|buf[3];
} else {
printk("error: %s,%d len = %d\n", __func__, __LINE__, len);
}
printk(" i2c: addr=0x%x value = 0x%x\n", t->addr, value);
}
mutex_unlock(&g_mutex);
return 0;
}
static long sinfo_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
int ret = 0;
int32_t data;
mutex_lock(&g_mutex);
switch (cmd) {
case IOCTL_SINFO_GET:
if (-1 == g_sensor_id)
data = -1;
else
data = g_sensor_id;
if (copy_to_user((void *)arg, &data, sizeof(data))) {
printk("copy_from_user error!!!\n");
ret = -EFAULT;
break;
}
break;
case IOCTL_SINFO_FLASH:
i2c_for_each_dev(NULL, process_one_adapter);
break;
default:
printk("invalid command: 0x%08x\n", cmd);
ret = -EINVAL;
}
mutex_unlock(&g_mutex);
return ret;
}
static int sinfo_open(struct inode *inode, struct file *filp)
{
i2c_for_each_dev(NULL, process_one_adapter);
return 0;
}
static int sinfo_release(struct inode *inode, struct file *filp)
{
printk ("misc sinfo_release\n");
sensor_release();
return 0;
}
static ssize_t sinfo_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
{
return 0;
}
static struct file_operations sinfo_fops =
{
.owner = THIS_MODULE,
.read = sinfo_read,
.unlocked_ioctl = sinfo_ioctl,
.open = sinfo_open,
.release = sinfo_release,
};
static struct miscdevice misc_sinfo = {
.minor = MISC_DYNAMIC_MINOR,
.name = "sinfo",
.fops = &sinfo_fops,
};
static int sinfo_proc_show(struct seq_file *m, void *v)
{
if (-1 == g_sensor_id)
seq_printf(m, "sensor not found\n");
else
seq_printf(m, "sensor :%s\n", g_sinfo[g_sensor_id].name);
return 0;
}
static int sinfo_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, sinfo_proc_show, NULL);
}
ssize_t sinfo_proc_write(struct file *filp, const char *buf, size_t len, loff_t *off)
{
int ret = 0;
char cmd[100] = {0};
uint32_t addr,data,datalen;
if (len > 100) {
printk("err: cmd too long\n");
return -EFAULT;
}
if(copy_from_user(cmd, buf, len))
{
return -EFAULT;
}
/* probe sensor */
if (!strncmp(cmd, "1", strlen("1"))) {
i2c_for_each_dev(NULL, process_one_adapter);
/* probe sensor */
} else if (!strncmp(cmd, "probe", strlen("probe"))) {
i2c_for_each_dev(NULL, process_one_adapter);
/* sensor open/release i2c read/write
* open: set sensor clk,reset
* release: free clk,reset gpio
*
* example: sc2135
*
* echo open:sc2135 > /proc/jz/sinfo/info
* echo i2c-w:0x30-0x3017-2 > /proc/jz/sinfo/info
* echo i2c-r:0x30-1 > /proc/jz/sinfo/info
*
* */
} else if (!strncmp(cmd, "i2c-w:", strlen("i2c-w:"))) {
ret = sscanf(cmd, "i2c-w:%i-%i-%i", &addr, &data, &datalen);
if (3 != ret) {
printk("err: cmd error %s\n", cmd);
return len;
} else {
struct i2c_trans t = {addr, I2C_WRITE, data, datalen};
printk("info: i2c-w:%d-%d-%d\n", addr, data, datalen);
i2c_for_each_dev(&t, i2c_read_write);
}
} else if (!strncmp(cmd, "i2c-r:", strlen("i2c-r:"))) {
ret = sscanf(cmd, "i2c-r:%i-%i", &addr, &datalen);
if (2 != ret) {
printk("err: cmd error %s\n", cmd);
return len;
} else {
struct i2c_trans t = {addr, I2C_READ, 0, datalen};
printk("info: i2c-r:%d-%d\n", addr, datalen);
i2c_for_each_dev(&t, i2c_read_write);
}
} else if (!strncmp(cmd, "open", strlen("open"))) {
int i = 0;
char s[20] = {0};
ret = sscanf(cmd, "open:%s", s);
if (1 != ret) {
printk("err: cmd error %s\n", cmd);
return len;
} else {
uint8_t scnt = sizeof(g_sinfo)/sizeof(g_sinfo[0]);
for (i = 0; i < scnt; i++) {
if (!strcmp(s, g_sinfo[i].name)) {
g_sensor_id = i;
break;
}
}
if (i >= scnt) {
printk("err: sensor not found %s, cmd %s\n", s, cmd);
return len;
}
sensor_open();
}
} else if (!strncmp(cmd, "release", strlen("release"))) {
sensor_release();
} else {
printk("err: cmd not support\n");
}
return len;
}
static const struct file_operations sinfo_proc_fops = {
.owner = THIS_MODULE,
.open = sinfo_proc_open,
.read = seq_read,
.write = sinfo_proc_write,
.llseek = seq_lseek,
.release = single_release,
};
struct proc_dir_entry *g_sinfo_proc;
static __init int init_sinfo(void)
{
int ret = 0;
mutex_init(&g_mutex);
#ifdef CONFIG_SOC_T21
*(volatile unsigned int*)(0xB0010104) = 0x1;
#endif
g_sinfo_proc = proc_mkdir("jz/sinfo", 0);
if (!g_sinfo_proc) {
printk("err: jz_proc_mkdir failed\n");
}
proc_create_data("info", S_IRUGO, g_sinfo_proc, &sinfo_proc_fops, NULL);
/* i2c_for_each_dev(NULL, process_one_adapter); */
ret = misc_register(&misc_sinfo);
/* printk("##### g_sensor_id = %d\n", g_sensor_id); */
return ret;
}
static __exit void exit_sinfo(void)
{
proc_remove(g_sinfo_proc);
misc_deregister(&misc_sinfo);
}
module_init(init_sinfo);
module_exit(exit_sinfo);
MODULE_DESCRIPTION("A Simple driver for get sensors info ");
MODULE_LICENSE("GPL");

View File

@ -55,7 +55,7 @@ sync_sensor_param() {
lsmod | grep "sinfo" >/dev/null lsmod | grep "sinfo" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/sinfo.ko modprobe sinfo
check_return "insmod sinfo" check_return "insmod sinfo"
fi fi
@ -162,31 +162,31 @@ echo --------------------
lsmod | grep "avpu" >/dev/null lsmod | grep "avpu" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/avpu.ko ${AVPU_PARAM} modprobe avpu ${AVPU_PARAM}
check_return "insmod avpu" check_return "insmod avpu"
fi fi
lsmod | grep "tx_isp" >/dev/null lsmod | grep "tx_isp" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/tx-isp-${SOC}.ko ${ISP_PARAM} modprobe tx-isp-${SOC} ${ISP_PARAM}
check_return "insmod isp drv" check_return "insmod isp drv"
fi fi
lsmod | grep ${SENSOR} >/dev/null lsmod | grep ${SENSOR} >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/sensor_${SENSOR}_${SOC}.ko ${SENSOR_PARAM} ${SENSOR_EXT_PARAM} modprobe sensor_${SENSOR}_${SOC} ${SENSOR_PARAM} ${SENSOR_EXT_PARAM}
check_return "insmod sensor drv" check_return "insmod sensor drv"
fi fi
lsmod | grep "audio" >/dev/null lsmod | grep "audio" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/audio.ko modprobe audio
check_return "insmod audio" check_return "insmod audio"
fi fi
lsmod | grep "gpio" >/dev/null lsmod | grep "gpio" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/gpio.ko modprobe gpio
check_return "insmod gpio" check_return "insmod gpio"
fi fi

View File

@ -31,35 +31,8 @@ define INGENIC_OSDRV_T31_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic
# $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/*.ko # $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/*.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/audio.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/avpu.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/gpio.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sinfo.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/tx-isp-t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_gc2053_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_gc2083_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_gc4653_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_imx307_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_jxf37_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_jxh62_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_jxq03_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_jxq03p_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_sc200ai_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_sc2232h_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_sc2335_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_sc3338_t31.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/3.10.14__isvp_swan_1.0__/ingenic $(INGENIC_OSDRV_T31_PKGDIR)/files/kmod/sensor_sc5235_t31.ko
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(INGENIC_OSDRV_T31_PKGDIR)/files/script/load* $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(INGENIC_OSDRV_T31_PKGDIR)/files/script/load*
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(INGENIC_OSDRV_T31_PKGDIR)/files/script/ircut_demo
# $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors/params
# $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors/params $(INGENIC_OSDRV_T31_PKGDIR)/files/sensor/params/*.bin
# $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors/params/WDR
# $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors/params/WDR $(INGENIC_OSDRV_T31_PKGDIR)/files/sensor/params/WDR/*.bin
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(INGENIC_OSDRV_T31_PKGDIR)/files/lib/*.so $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(INGENIC_OSDRV_T31_PKGDIR)/files/lib/*.so

View File

@ -24,7 +24,7 @@ check_return() {
lsmod | grep "sinfo" >/dev/null lsmod | grep "sinfo" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/sinfo.ko modprobe sinfo
check_return "insmod sinfo" check_return "insmod sinfo"
fi fi
@ -79,31 +79,31 @@ echo --------------------
lsmod | grep "avpu" >/dev/null lsmod | grep "avpu" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/avpu.ko ${AVPU_PARAM} modprobe avpu ${AVPU_PARAM}
check_return "insmod avpu" check_return "insmod avpu"
fi fi
lsmod | grep "tx_isp" >/dev/null lsmod | grep "tx_isp" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/tx-isp-${SOC}.ko ${ISP_PARAM} modprobe tx-isp-${SOC} ${ISP_PARAM}
check_return "insmod isp drv" check_return "insmod isp drv"
fi fi
lsmod | grep ${SENSOR} >/dev/null lsmod | grep ${SENSOR} >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/sensor_${SENSOR}_${SOC}.ko ${SENSOR_PARAM} modprobe sensor_${SENSOR}_${SOC} ${SENSOR_PARAM}
check_return "insmod sensor drv" check_return "insmod sensor drv"
fi fi
lsmod | grep "audio" >/dev/null lsmod | grep "audio" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/audio.ko modprobe audio
check_return "insmod audio" check_return "insmod audio"
fi fi
lsmod | grep "gpio" >/dev/null lsmod | grep "gpio" >/dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
insmod ${KMOD_PATH/%\//}/gpio.ko modprobe gpio
check_return "insmod gpio" check_return "insmod gpio"
fi fi

View File

@ -24,24 +24,9 @@ define INGENIC_OSDRV_T40_INSTALL_TARGET_CMDS
$(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensor $(INGENIC_OSDRV_T40_PKGDIR)/files/sensor/params/sc830ai-t40.bin $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensor $(INGENIC_OSDRV_T40_PKGDIR)/files/sensor/params/sc830ai-t40.bin
$(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/4.4.94/ingenic
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/audio.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/avpu.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/dtrng_dev.ko $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/dtrng_dev.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/gpio.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/mpsys.ko $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/mpsys.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sinfo.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/soc-nna.ko $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/soc-nna.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/tx-isp-t40.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sensor_gc4653_t40.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sensor_imx307_t40.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sensor_imx335_t40.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sensor_imx415_t40.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sensor_jxk04_t40.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sensor_sc2232h_t40.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sensor_sc500ai_t40.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sensor_sc3335_t40.ko
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/4.4.94/ingenic $(INGENIC_OSDRV_T40_PKGDIR)/files/kmod/sensor_sc5235_t40.ko
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(INGENIC_OSDRV_T40_PKGDIR)/files/script/load* $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(INGENIC_OSDRV_T40_PKGDIR)/files/script/load*