|
68 | 68 | #include <sys/stat.h> |
69 | 69 | #include <sys/wait.h> |
70 | 70 | #include <sys/ioctl.h> |
71 | | -#include <linux/version.h> |
| 71 | +#include <sys/utsname.h> |
72 | 72 |
|
73 | 73 | #include "softPwm.h" |
74 | 74 | #include "softTone.h" |
@@ -679,13 +679,8 @@ static int adcFds [2] = { |
679 | 679 | #define GPIO_B3_PUD_OFFSET 0x00C8 |
680 | 680 | #define GPIO_B3_END 214 |
681 | 681 |
|
682 | | -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0) |
683 | | -#define piAinNode0_xu "/sys/devices/platform/soc:/12d10000.adc:/iio:device0/in_voltage0_raw" |
684 | | -#define piAinNode1_xu "/sys/devices/platform/soc:/12d10000.adc:/iio:device0/in_voltage3_raw" |
685 | | -#else |
686 | | -#define piAinNode0_xu "/sys/devices/12d10000.adc/iio:device0/in_voltage0_raw" |
687 | | -#define piAinNode1_xu "/sys/devices/12d10000.adc/iio:device0/in_voltage3_raw" |
688 | | -#endif |
| 682 | +static char *piAinNode0_xu; |
| 683 | +static char *piAinNode1_xu; |
689 | 684 |
|
690 | 685 | static int piModel = PI_MODEL_UNKNOWN; |
691 | 686 |
|
@@ -2913,6 +2908,21 @@ int wiringPiSetup (void) |
2913 | 2908 | adcFds [1] = open (C2_piAinNode1, O_RDONLY) ; |
2914 | 2909 | } |
2915 | 2910 | else if ( model == PI_MODEL_ODROIDXU_34 ) { |
| 2911 | + // Check the kernel version and then set the ADC files |
| 2912 | + struct utsname uname_buf; |
| 2913 | + |
| 2914 | + uname(&uname_buf); |
| 2915 | + if (strncmp(uname_buf.release, "4.14", 4) == 0) { |
| 2916 | + piAinNode0_xu = "/sys/devices/platform/soc/12d10000.adc/iio:device0/in_voltage0_raw"; |
| 2917 | + piAinNode1_xu = "/sys/devices/platform/soc/12d10000.adc/iio:device0/in_voltage3_raw"; |
| 2918 | + } else if (strncmp(uname_buf.release, "4.9", 3) == 0) { |
| 2919 | + piAinNode0_xu = "/sys/devices/platform/soc:/12d10000.adc:/iio:device0/in_voltage0_raw"; |
| 2920 | + piAinNode1_xu = "/sys/devices/platform/soc:/12d10000.adc:/iio:device0/in_voltage3_raw"; |
| 2921 | + } else { // 3.10 kernel |
| 2922 | + piAinNode0_xu = "/sys/devices/12d10000.adc/iio:device0/in_voltage0_raw"; |
| 2923 | + piAinNode1_xu = "/sys/devices/12d10000.adc/iio:device0/in_voltage3_raw"; |
| 2924 | + } |
| 2925 | + |
2916 | 2926 | pinToGpio = pinToGpioOdroidXU; |
2917 | 2927 | pin_array_count = ARRAY_SIZE(pinToGpioOdroidXU); |
2918 | 2928 | physToGpio = physToGpioOdroidXU; |
@@ -3100,6 +3110,21 @@ int wiringPiSetupSys (void) |
3100 | 3110 | adcFds [1] = open (C2_piAinNode1, O_RDONLY) ; |
3101 | 3111 | } |
3102 | 3112 | else if ( model == PI_MODEL_ODROIDXU_34 ) { |
| 3113 | + // Check the kernel version and then set the ADC files |
| 3114 | + struct utsname uname_buf; |
| 3115 | + |
| 3116 | + uname(&uname_buf); |
| 3117 | + if (strncmp(uname_buf.release, "4.14", 4) == 0) { |
| 3118 | + piAinNode0_xu = "/sys/devices/platform/soc/12d10000.adc/iio:device0/in_voltage0_raw"; |
| 3119 | + piAinNode1_xu = "/sys/devices/platform/soc/12d10000.adc/iio:device0/in_voltage3_raw"; |
| 3120 | + } else if (strncmp(uname_buf.release, "4.9", 3) == 0) { |
| 3121 | + piAinNode0_xu = "/sys/devices/platform/soc:/12d10000.adc:/iio:device0/in_voltage0_raw"; |
| 3122 | + piAinNode1_xu = "/sys/devices/platform/soc:/12d10000.adc:/iio:device0/in_voltage3_raw"; |
| 3123 | + } else { // 3.10 kernel |
| 3124 | + piAinNode0_xu = "/sys/devices/12d10000.adc/iio:device0/in_voltage0_raw"; |
| 3125 | + piAinNode1_xu = "/sys/devices/12d10000.adc/iio:device0/in_voltage3_raw"; |
| 3126 | + } |
| 3127 | + |
3103 | 3128 | pinToGpio = pinToGpioOdroidXU ; |
3104 | 3129 | pin_array_count = ARRAY_SIZE(pinToGpioOdroidXU); |
3105 | 3130 | physToGpio = physToGpioOdroidXU ; |
|
0 commit comments