xref: /openbmc/openbmc-tools/adcapp/src/adc.h (revision cf3c1e6773c0ea0346874da66a609d22cbf11ec3)
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