1*cf3c1e67SAndrew Jeffery /***************************************************************** 2*cf3c1e67SAndrew Jeffery * 3*cf3c1e67SAndrew Jeffery * adcapp.c 4*cf3c1e67SAndrew Jeffery * application specific driver header. 5*cf3c1e67SAndrew Jeffery * 6*cf3c1e67SAndrew Jeffery * Author: Rama Rao Bisa <ramab@ami.com> 7*cf3c1e67SAndrew Jeffery * 8*cf3c1e67SAndrew Jeffery * Copyright (C) <2019> <American Megatrends International LLC> 9*cf3c1e67SAndrew Jeffery * 10*cf3c1e67SAndrew Jeffery *****************************************************************/ 11*cf3c1e67SAndrew Jeffery 12*cf3c1e67SAndrew Jeffery #ifndef __ADC_H__ 13*cf3c1e67SAndrew Jeffery #define __ADC_H__ 14*cf3c1e67SAndrew Jeffery 15*cf3c1e67SAndrew Jeffery #define READ_ADC_CHANNEL _IOC(_IOC_WRITE,'K',0x100,0x3FFF) 16*cf3c1e67SAndrew Jeffery #define READ_ADC_REF_VOLATGE _IOC(_IOC_WRITE,'K',0x101,0x3FFF) 17*cf3c1e67SAndrew Jeffery #define READ_ADC_RESOLUTION _IOC(_IOC_WRITE,'K',0x102,0x3FFF) 18*cf3c1e67SAndrew Jeffery #define ENABLE_EXT_REF_VOLTAGE _IOC(_IOC_WRITE,'K',0x103,0x3FFF) 19*cf3c1e67SAndrew Jeffery #define DISABLE_EXT_REF_VOLTAGE _IOC(_IOC_WRITE,'K',0x104,0x3FFF) 20*cf3c1e67SAndrew Jeffery #define ENABLE_ADC_CHANNEL _IOC(_IOC_WRITE,'K',0x105,0x3FFF) 21*cf3c1e67SAndrew Jeffery #define DISABLE_ADC_CHANNEL _IOC(_IOC_WRITE,'K',0x106,0x3FFF) 22*cf3c1e67SAndrew Jeffery 23*cf3c1e67SAndrew Jeffery #define PACKED __attribute__ ((packed)) 24*cf3c1e67SAndrew Jeffery 25*cf3c1e67SAndrew Jeffery typedef struct 26*cf3c1e67SAndrew Jeffery { 27*cf3c1e67SAndrew Jeffery uint8_t channel_num; 28*cf3c1e67SAndrew Jeffery uint16_t channel_value; 29*cf3c1e67SAndrew Jeffery 30*cf3c1e67SAndrew Jeffery } PACKED get_adc_value_t; 31*cf3c1e67SAndrew Jeffery #if 0 32*cf3c1e67SAndrew Jeffery typedef struct 33*cf3c1e67SAndrew Jeffery { 34*cf3c1e67SAndrew Jeffery int (*adc_read_channel) (uint16_t *adc_value, int channel); 35*cf3c1e67SAndrew Jeffery int (*adc_get_resolution) (uint16_t *adc_resolution); 36*cf3c1e67SAndrew Jeffery int (*adc_get_reference_voltage) (uint16_t *adc_ref_volatge); 37*cf3c1e67SAndrew Jeffery int (*adc_reboot_notifier) (void); 38*cf3c1e67SAndrew Jeffery }adc_hal_operations_t; 39*cf3c1e67SAndrew Jeffery 40*cf3c1e67SAndrew Jeffery typedef struct 41*cf3c1e67SAndrew Jeffery { 42*cf3c1e67SAndrew Jeffery } adc_core_funcs_t; 43*cf3c1e67SAndrew Jeffery 44*cf3c1e67SAndrew Jeffery 45*cf3c1e67SAndrew Jeffery struct adc_hal 46*cf3c1e67SAndrew Jeffery { 47*cf3c1e67SAndrew Jeffery adc_hal_operations_t *padc_hal_ops; 48*cf3c1e67SAndrew Jeffery }; 49*cf3c1e67SAndrew Jeffery 50*cf3c1e67SAndrew Jeffery struct adc_dev 51*cf3c1e67SAndrew Jeffery { 52*cf3c1e67SAndrew Jeffery struct adc_hal *padc_hal; 53*cf3c1e67SAndrew Jeffery }; 54*cf3c1e67SAndrew Jeffery #endif 55*cf3c1e67SAndrew Jeffery 56*cf3c1e67SAndrew Jeffery #endif /* !__ADC_H__ */ 57