diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit index 7ece30fb3..695b6503f 100755 --- a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit @@ -1,14 +1,72 @@ #!/bin/sh +KERVER=`cat /proc/version | awk -F'version ' '{print $2}' | awk -F' ' '{print $1}'` + device_node_create() { mknod /dev/$1 c `cat /sys/class/$1/$1/dev | sed "s/:/\ /g"` } +P_GPIO0=32 +P_GPIO1=33 +DELAY=0.003 + +echo ${P_GPIO0} > /sys/class/gpio/export +echo ${P_GPIO1} > /sys/class/gpio/export + +sleep ${DELAY} + +echo "out" > /sys/devices/gpiochip0/gpio/gpio${P_GPIO0}/direction +echo "out" > /sys/devices/gpiochip0/gpio/gpio${P_GPIO1}/direction + +echo 1 > /sys/devices/gpiochip0/gpio/gpio${P_GPIO0}/value +echo 1 > /sys/devices/gpiochip0/gpio/gpio${P_GPIO1}/value + +sleep ${DELAY} + +echo "insert adc ko" +mem bit 0xF0020074 3 0 +insmod /lib/modules/$KERVER/kernel/drivers/iio/industrialio.ko +insmod /lib/modules/$KERVER/kernel/drivers/iio/adc/nvt_adc.ko +mem bit 0xF0020074 3 1 + # Setup mdev echo "fs" > /proc/nvt_info/bootts echo "/sbin/mdev" > /proc/sys/kernel/hotplug #modprobe mmc_na51055 + +if [ 1 ] ; then + +sleep ${DELAY} + +echo 0x5 > /proc/adc +cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw +echo 0x3 > /proc/adc +sleep ${DELAY} + +echo 1 > /sys/devices/gpiochip0/gpio/gpio${P_GPIO0}/value +echo 0 > /sys/devices/gpiochip0/gpio/gpio${P_GPIO1}/value +sleep ${DELAY} +cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw +echo 0x1 > /proc/adc +sleep ${DELAY} + +echo 0 > /sys/devices/gpiochip0/gpio/gpio${P_GPIO0}/value +echo 0 > /sys/devices/gpiochip0/gpio/gpio${P_GPIO1}/value +sleep ${DELAY} +cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw +echo 0x0 > /proc/adc +sleep ${DELAY} + +echo 0 > /sys/devices/gpiochip0/gpio/gpio${P_GPIO0}/value +echo 1 > /sys/devices/gpiochip0/gpio/gpio${P_GPIO1}/value +sleep ${DELAY} +echo 0x2 > /proc/adc +sleep ${DELAY} +cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw + +fi + mdev -s # Scan for without insert card diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S10_SysInit2 b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S10_SysInit2 index f2bdc2ac1..b0fd48c7d 100755 --- a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S10_SysInit2 +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S10_SysInit2 @@ -132,13 +132,13 @@ fi #iio & adc (for keyscan) -if [[ -f ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/industrialio.ko ]]; then -insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/industrialio.ko -fi +#if [[ -f ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/industrialio.ko ]]; then +#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/industrialio.ko +#fi -if [[ -f ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/adc/nvt_adc.ko ]]; then -insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/adc/nvt_adc.ko -fi +#if [[ -f ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/adc/nvt_adc.ko ]]; then +#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/iio/adc/nvt_adc.ko +#fi #usb #if [[ -f ${PREFIX}/lib/modules/$KERVER/hdal/comm/uvcp/nvt_uvcp.ko ]]; then diff --git a/code/application/source/sf_app/code/source/battery/sf_battery.c b/code/application/source/sf_app/code/source/battery/sf_battery.c index 9ae1ae00f..25787d683 100755 --- a/code/application/source/sf_app/code/source/battery/sf_battery.c +++ b/code/application/source/sf_app/code/source/battery/sf_battery.c @@ -106,7 +106,8 @@ UINT32 sf_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UI //volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696; if(adcVal) { - volt = (27 * adcVal + 554) / 539; + //volt = (27 * adcVal + 554) / 539; + volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696; } return volt; } @@ -131,7 +132,8 @@ UINT32 sf_aa_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, //volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511; if(adcVal) { - volt = (27 * adcVal + 3097) / 531; + volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696; + //volt = (27 * adcVal + 3097) / 531; } return volt; } @@ -144,7 +146,8 @@ UINT32 sf_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UIN //adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); if(volt) { - adcVal = (volt * 539 - 554) / 27; + //adcVal = (volt * 539 - 554) / 27; + adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); } return adcVal; } @@ -157,7 +160,8 @@ UINT32 sf_aa_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, //adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); if(volt) { - adcVal = (volt * 531 - 3097) / 27; + //adcVal = (volt * 531 - 3097) / 27; + adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); } return adcVal; } @@ -208,6 +212,7 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval) { static UINT8 getAdcFlg = 0; //static UINT8 outputflag = 1; + UINT32 adc_device_delay_time_ms = 100; *pval = 0; if(getAdcFlg) @@ -222,6 +227,8 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval) //B:0 A:0 gpio_set_value(SF_ADC_MUXA, 0);//adc_muxa gpio_set_value(SF_ADC_MUXB, 0);//adc_muxb + vos_util_delay_ms(1); + *pval = adc_readVoltage_channel0_avg(0, adc_device_delay_time_ms); } else if(SF_ADC_LI == mux)//v-li_det { @@ -229,23 +236,28 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval) gpio_set_value(SF_ADC_MUXA, 1);//adc_muxa gpio_set_value(SF_ADC_MUXB, 0);//adc_muxb + vos_util_delay_ms(1); + *pval = adc_readVoltage_channel0_avg(1, adc_device_delay_time_ms); } else if(SF_ADC_DC == mux)//dc12_det { //B:1 A:0 gpio_set_value(SF_ADC_MUXA, 0);//adc_muxa gpio_set_value(SF_ADC_MUXB, 1);//adc_muxb + adc_readVoltage_channel0_avg(2, adc_device_delay_time_ms); + + vos_util_delay_ms(1); + *pval = adc_readVoltage(0); } else if(SF_ADC_TEMP == mux)//temp_det { //B:1 A:1 gpio_set_value(SF_ADC_MUXA, 1);//adc_muxa gpio_set_value(SF_ADC_MUXB, 1);//adc_muxb + vos_util_delay_ms(1); + *pval = adc_readVoltage_channel0_avg(3, adc_device_delay_time_ms); } - vos_util_delay_ms(1); - - *pval = adc_readVoltage(0); //*pval = adc_readData(0); //printf("[%s:%d] *pval:%d\n", __FUNCTION__, __LINE__,*pval); getAdcFlg = 0;