1- # Copyright (C) 2022-2025 Analog Devices, Inc.
2- #
3- # SPDX short identifier: ADIBSD
4-
5- from adi .attribute import attribute
6- from adi .context_manager import context_manager
7-
8-
9- class adt7420 (attribute , context_manager ):
10-
11- _device_name = "adt7420"
12-
13- def __init__ (self , uri = "" ):
14-
15- context_manager .__init__ (self , uri , self ._device_name )
16-
17- self ._ctrl = self ._ctx .find_device (self ._device_name )
18-
19- if not self ._ctrl :
20- raise Exception ("ADT7420 device not found" )
21-
22- self .channel = []
23- self ._rx_channel_names = []
24-
25- for ch in self ._ctrl .channels :
26- name = ch ._id
27-
28- self ._rx_channel_names .append (name )
29- self .channel .append (name )
30-
31- if name == "temp" :
32- # no-OS
33- setattr (self , name , self .channel_temp (self ._ctrl , name ))
34- self .temp = self .channel_temp (self ._ctrl , "temp" )
35- elif name == "temp1" :
36- # Linux
37- setattr (self , name , self .channel_temp1 (self ._ctrl , name ))
38- self .temp = self .channel_temp1 (self ._ctrl , "temp1" )
39- else :
40- raise Exception (f"Unsupported: { name } " )
41-
42- class channel_temp (attribute ):
43- """Channel for no-OS driver"""
44-
45- def __init__ (self , ctrl , channel_name ):
46- self ._ctrl = ctrl
47- self .name = channel_name
48-
49- @property
50- def temp_val (self ):
51- """ Read temperature value """
52- return self ._get_iio_attr (self .name , "temp" , False )
53-
54- @property
55- def temp_max (self ):
56- return self ._get_iio_attr (self .name , "temp_max" , False )
57-
58- @temp_max .setter
59- def temp_max (self , value ):
60- return self ._set_iio_attr (self .name , "temp_max" , False , value )
61-
62- @property
63- def temp_min (self ):
64- return self ._get_iio_attr (self .name , "temp_min" , False )
65-
66- @temp_min .setter
67- def temp_min (self , value ):
68- return self ._set_iio_attr (self .name , "temp_min" , False , value )
69-
70- @property
71- def temp_crit (self ):
72- return self ._get_iio_attr (self .name , "temp_crit" , False )
73-
74- @temp_crit .setter
75- def temp_crit (self , value ):
76- return self ._set_iio_attr (self .name , "temp_crit" , False , value )
77-
78- @property
79- def temp_hyst (self ):
80- return self ._get_iio_attr (self .name , "temp_hyst" , False )
81-
82- @temp_hyst .setter
83- def temp_hyst (self , value ):
84- return self ._set_iio_attr (self .name , "temp_hyst" , False , value )
85-
86- class channel_temp1 (attribute ):
87- """Channel for Linux driver"""
88-
89- def __init__ (self , ctrl , channel_name ):
90- self ._ctrl = ctrl
91- self .name = channel_name
92-
93- @property
94- def temp_val (self ):
95- return self ._get_iio_attr (self .name , "input" , False )
96-
97- @property
98- def temp_max (self ):
99- return self ._get_iio_attr (self .name , "max" , False )
100-
101- @temp_max .setter
102- def temp_max (self , value ):
103- return self ._set_iio_attr (self .name , "max" , False , value )
104-
105- @property
106- def temp_min (self ):
107- return self ._get_iio_attr (self .name , "min" , False )
108-
109- @temp_min .setter
110- def temp_min (self , value ):
111- return self ._set_iio_attr (self .name , "min" , False , value )
112-
113- @property
114- def temp_crit (self ):
115- return self ._get_iio_attr (self .name , "crit" , False )
116-
117- @temp_crit .setter
118- def temp_crit (self , value ):
119- return self ._set_iio_attr (self .name , "crit" , False , value )
120-
121- @property
122- def temp_hyst (self ):
123- return self ._get_iio_attr (self .name , "max_hyst" , False )
124-
125- @temp_hyst .setter
126- def temp_hyst (self , value ):
127- return self ._set_iio_attr (self .name , "max_hyst" , False , value )
1+ # Copyright (C) 2022-2025 Analog Devices, Inc.
2+ #
3+ # SPDX short identifier: ADIBSD
4+ from adi .attribute import attribute
5+ from adi .context_manager import context_manager
6+
7+
8+ class adt7420 (attribute , context_manager ):
9+ _device_name = "adt7420"
10+
11+ def __init__ (self , uri = "" ):
12+ context_manager .__init__ (self , uri , self ._device_name )
13+ self ._ctrl = self ._ctx .find_device (self ._device_name )
14+ if not self ._ctrl :
15+ raise Exception ("ADT7420 device not found" )
16+
17+ self .channel = []
18+ self ._rx_channel_names = []
19+ for ch in self ._ctrl .channels :
20+ name = ch ._id
21+ self ._rx_channel_names .append (name )
22+ self .channel .append (name )
23+ if name == "temp" :
24+ # no-OS version
25+ chan = self .channel_temp (self ._ctrl , name , is_linux = False )
26+ elif name == "temp1" :
27+ # Linux version
28+ chan = self .channel_temp (self ._ctrl , name , is_linux = True )
29+ else :
30+ raise Exception (f"Unsupported: { name } " )
31+
32+ setattr (self , name , chan )
33+ self .temp = chan
34+
35+ class channel_temp (attribute ):
36+ """ADT7420 Channel for no-OS"""
37+
38+ def __init__ (self , ctrl , channel_name , is_linux ):
39+ self ._ctrl = ctrl
40+ self .name = channel_name
41+ self .is_linux = is_linux
42+
43+ @property
44+ def temp_val (self ):
45+ """ ADT7420 Channel Temperature Value """
46+ pname = "input" if self .is_linux else "temp"
47+ return self ._get_iio_attr (self .name , pname , False )
48+
49+ @property
50+ def temp_max (self ):
51+ """ ADT7420 Channel Max Temperature """
52+ pname = "max" if self .is_linux else "temp_max"
53+ return self ._get_iio_attr (self .name , pname , False )
54+
55+ @temp_max .setter
56+ def temp_max (self , value ):
57+ """ ADT7420 Channel Max Temperature """
58+ pname = "max" if self .is_linux else "temp_max"
59+ return self ._set_iio_attr (self .name , pname , False , value )
60+
61+ @property
62+ def temp_min (self ):
63+ """ ADT7420 Channel Min Temperature """
64+ pname = "min" if self .is_linux else "temp_min"
65+ return self ._get_iio_attr (self .name , pname , False )
66+
67+ @temp_min .setter
68+ def temp_min (self , value ):
69+ """ ADT7420 Channel Min Temperature """
70+ pname = "min" if self .is_linux else "temp_min"
71+ return self ._set_iio_attr (self .name , pname , False , value )
72+
73+ @property
74+ def temp_crit (self ):
75+ """ ADT7420 Channel Critical Temperature """
76+ pname = "crit" if self .is_linux else "temp_crit"
77+ return self ._get_iio_attr (self .name , pname , False )
78+
79+ @temp_crit .setter
80+ def temp_crit (self , value ):
81+ """ ADT7420 Channel Critical Temperature """
82+ pname = "crit" if self .is_linux else "temp_crit"
83+ return self ._set_iio_attr (self .name , pname , False , value )
84+
85+ @property
86+ def temp_hyst (self ):
87+ """ ADT7420 Channel Hysteresis Temperature """
88+ pname = "max_hyst" if self .is_linux else "temp_hyst"
89+ return self ._get_iio_attr (self .name , pname , False )
90+
91+ @temp_hyst .setter
92+ def temp_hyst (self , value ):
93+ """ ADT7420 Channel Hysteresis Temperature """
94+ pname = "max_hyst" if self .is_linux else "temp_hyst"
95+ return self ._set_iio_attr (self .name , pname , False , value )
0 commit comments