45#define ADE7978_SPI_READ_CMD 0x01
46#define ADE7978_SPI_WRITE_CMD 0x00
52#define ADE7978_REG_AIGAIN 0x4380
53#define ADE7978_REG_AVGAIN 0x4381
54#define ADE7978_REG_AV2GAIN 0x4382
55#define ADE7978_REG_BIGAIN 0x4383
56#define ADE7978_REG_BVGAIN 0x4384
57#define ADE7978_REG_BV2GAIN 0x4385
58#define ADE7978_REG_CIGAIN 0x4386
59#define ADE7978_REG_CVGAIN 0x4387
60#define ADE7978_REG_CV2GAIN 0x4388
61#define ADE7978_REG_NIGAIN 0x4389
62#define ADE7978_REG_NVGAIN 0x438A
63#define ADE7978_REG_NV2GAIN 0x438B
64#define ADE7978_REG_AIRMSOS 0x438C
65#define ADE7978_REG_AVRMSOS 0x438D
66#define ADE7978_REG_AV2RMSOS 0x438E
67#define ADE7978_REG_BIRMSOS 0x438F
68#define ADE7978_REG_BVRMSOS 0x4390
69#define ADE7978_REG_BV2RMSOS 0x4391
70#define ADE7978_REG_CIRMSOS 0x4392
71#define ADE7978_REG_CVRMSOS 0x4393
72#define ADE7978_REG_CV2RMSOS 0x4394
73#define ADE7978_REG_NIRMSOS 0x4395
74#define ADE7978_REG_NVRMSOS 0x4396
75#define ADE7978_REG_NV2RMSOS 0x4397
76#define ADE7978_REG_ISUMLVL 0x4398
77#define ADE7978_REG_APGAIN 0x4399
78#define ADE7978_REG_BPGAIN 0x439A
79#define ADE7978_REG_CPGAIN 0x439B
80#define ADE7978_REG_AWATTOS 0x439C
81#define ADE7978_REG_BWATTOS 0x439D
82#define ADE7978_REG_CWATTOS 0x439E
83#define ADE7978_REG_AVAROS 0x439F
84#define ADE7978_REG_BVAROS 0x43A0
85#define ADE7978_REG_CVAROS 0x43A1
86#define ADE7978_REG_AFWATTOS 0x43A3
87#define ADE7978_REG_BFWATTOS 0x43A4
88#define ADE7978_REG_CFWATTOS 0x43A5
89#define ADE7978_REG_AFVAROS 0x43A6
90#define ADE7978_REG_BFVAROS 0x43A7
91#define ADE7978_REG_CFVAROS 0x43A8
92#define ADE7978_REG_AFIRMSOS 0x43A9
93#define ADE7978_REG_BFIRMSOS 0x43AA
94#define ADE7978_REG_CFIRMSOS 0x43AB
95#define ADE7978_REG_AFVRMSOS 0x43AC
96#define ADE7978_REG_BFVRMSOS 0x43AD
97#define ADE7978_REG_CFVRMSOS 0x43AE
98#define ADE7978_REG_TEMPCO 0x43AF
99#define ADE7978_REG_ATEMP0 0x43B0
100#define ADE7978_REG_BTEMP0 0x43B1
101#define ADE7978_REG_CTEMP0 0x43B2
102#define ADE7978_REG_NTEMPO 0x43B3
103#define ADE7978_REG_ATGAIN 0x43B4
104#define ADE7978_REG_BTGAIN 0x43B5
105#define ADE7978_REG_CTGAIN 0x43B6
106#define ADE7978_REG_NTGAIN 0x43B7
107#define ADE7978_REG_AIRMS 0x43C0
108#define ADE7978_REG_AVRMS 0x43C1
109#define ADE7978_REG_AV2RMS 0x43C2
110#define ADE7978_REG_BIRMS 0x43C3
111#define ADE7978_REG_BVRMS 0x43C4
112#define ADE7978_REG_BV2RMS 0x43C5
113#define ADE7978_REG_CIRMS 0x43C6
114#define ADE7978_REG_CVRMS 0x43C7
115#define ADE7978_REG_CV2RMS 0x43C8
116#define ADE7978_REG_NIRMS 0X43C9
117#define ADE7978_REG_ISUM 0X43CA
118#define ADE7978_REG_ATEMP 0X43CB
119#define ADE7978_REG_BTEMP 0X43CC
120#define ADE7978_REG_CTEMP 0X43CD
121#define ADE7978_REG_NTEMP 0X43CE
124#define ADE7978_REG_RUN 0xE228
127#define ADE7978_REG_AWATTHR 0xE400
128#define ADE7978_REG_BWATTHR 0xE401
129#define ADE7978_REG_CWATTHR 0xE402
130#define ADE7978_REG_AFWATTHR 0xE403
131#define ADE7978_REG_BFWATTHR 0xE404
132#define ADE7978_REG_CFWATTHR 0xE405
133#define ADE7978_REG_AVARHR 0xE406
134#define ADE7978_REG_BVARHR 0xE407
135#define ADE7978_REG_CVARHR 0xE408
136#define ADE7978_REG_AFVARHR 0xE409
137#define ADE7978_REG_BFVARHR 0xE40A
138#define ADE7978_REG_CFVARHR 0xE40B
139#define ADE7978_REG_AVAHR 0xE40C
140#define ADE7978_REG_BVAHR 0xE40D
141#define ADE7978_REG_CVAHR 0xE40E
144#define ADE7978_REG_IPEAK 0xE500
145#define ADE7978_REG_VPEAK 0xE501
146#define ADE7978_REG_STATUS0 0xE502
147#define ADE7978_REG_STATUS1 0xE503
148#define ADE7978_REG_OILVL 0xE507
149#define ADE7978_REG_OVLVL 0xE508
150#define ADE7978_REG_SAGLVL 0xE509
151#define ADE7978_REG_MASK0 0xE50A
152#define ADE7978_REG_MASK1 0xE50B
153#define ADE7978_REG_IAWV 0xE50C
154#define ADE7978_REG_IBWV 0xE50D
155#define ADE7978_REG_ICWV 0xE50E
156#define ADE7978_REG_INWV 0xE50F
157#define ADE7978_REG_VAWV 0xE510
158#define ADE7978_REG_VBWV 0xE511
159#define ADE7978_REG_VCWV 0xE512
160#define ADE7978_REG_VA2WV 0xE513
161#define ADE7978_REG_VB2WV 0xE514
162#define ADE7978_REG_VC2WV 0xE515
163#define ADE7978_REG_VNWV 0xE516
164#define ADE7978_REG_VN2WV 0xE517
165#define ADE7978_REG_AWATT 0xE518
166#define ADE7978_REG_BWATT 0xE519
167#define ADE7978_REG_CWATT 0xE51A
168#define ADE7978_REG_AVAR 0xE51B
169#define ADE7978_REG_BVAR 0xE51C
170#define ADE7978_REG_CVAR 0xE51D
171#define ADE7978_REG_AVA 0xE51E
172#define ADE7978_REG_BVA 0xE51F
173#define ADE7978_REG_CVA 0xE520
174#define ADE7978_REG_AVTHD 0xE521
175#define ADE7978_REG_AITHD 0xE522
176#define ADE7978_REG_BVTHD 0xE523
177#define ADE7978_REG_BITHD 0xE524
178#define ADE7978_REG_CVTHD 0xE525
179#define ADE7978_REG_CITHD 0xE526
180#define ADE7978_REG_NVRMS 0xE530
181#define ADE7978_REG_NV2RMS 0xE531
182#define ADE7978_REG_CHECKSUM 0xE532
183#define ADE7978_REG_VNOM 0xE533
184#define ADE7978_REG_AFIRMS 0xE537
185#define ADE7978_REG_AFVRMS 0xE538
186#define ADE7978_REG_BFIRMS 0xE539
187#define ADE7978_REG_BFVRMS 0xE53A
188#define ADE7978_REG_CFIRMS 0xE53B
189#define ADE7978_REG_CFVRMS 0xE53C
190#define ADE7978_REG_LAST_RWDATA32 0xE5FF
191#define ADE7978_REG_PHSTATUS 0xE600
192#define ADE7978_REG_ANGLE0 0xE601
193#define ADE7978_REG_ANGLE1 0xE602
194#define ADE7978_REG_ANGLE2 0xE603
195#define ADE7978_REG_PHNOLOAD 0xE608
196#define ADE7978_REG_LINECYC 0xE60C
197#define ADE7978_REG_ZXTOUT 0xE60D
198#define ADE7978_REG_COMPMODE 0xE60E
199#define ADE7978_REG_CFMODE 0xE610
200#define ADE7978_REG_CF1DEN 0xE611
201#define ADE7978_REG_CF2DEN 0xE612
202#define ADE7978_REG_CF3DEN 0xE613
203#define ADE7978_REG_APHCAL 0xE614
204#define ADE7978_REG_BPHCAL 0xE615
205#define ADE7978_REG_CPHCAL 0xE616
206#define ADE7978_REG_PHSIGN 0xE617
207#define ADE7978_REG_CONFIG 0xE618
208#define ADE7978_REG_MMODE 0xE700
209#define ADE7978_REG_ACCMODE 0xE701
210#define ADE7978_REG_LCYCMODE 0xE702
211#define ADE7978_REG_PEAKCYC 0xE703
212#define ADE7978_REG_SAGCYC 0xE704
213#define ADE7978_REG_CFCYC 0xE705
214#define ADE7978_REG_HSDC_CFG 0xE706
215#define ADE7978_REG_VERSION 0xE707
216#define ADE7978_REG_CONFIG3 0xE708
217#define ADE7978_REG_ATEMPOS 0xE709
218#define ADE7978_REG_BTEMPOS 0xE70A
219#define ADE7978_REG_CTEMPOS 0xE70B
220#define ADE7978_REG_NTEMPOS 0xE70C
221#define ADE7978_REG_LAST_RWDATA8 0xE7FD
222#define ADE7978_REG_APF 0xE902
223#define ADE7978_REG_BPF 0xE903
224#define ADE7978_REG_CPF 0xE904
225#define ADE7978_REG_APERIOD 0xE905
226#define ADE7978_REG_BPERIOD 0xE906
227#define ADE7978_REG_CPERIOD 0xE907
228#define ADE7978_REG_APNOLOAD 0xE908
229#define ADE7978_REG_VARNOLOAD 0xE909
230#define ADE7978_REG_VANOLOAD 0xE90A
231#define ADE7978_REG_LAST_ADD 0xE9FE
232#define ADE7978_REG_LAST_RWDATA16 0xE9FF
233#define ADE7978_REG_CONFIG2 0xEA00
234#define ADE7978_REG_LAST_OP 0xEA01
235#define ADE7978_REG_WTHR 0xEA02
236#define ADE7978_REG_VARTHR 0xEA03
237#define ADE7978_REG_VATHR 0xEA04
240#define ADE7978_IPPHASE2 NO_OS_BIT(26)
241#define ADE7978_IPPHASE1 NO_OS_BIT(25)
242#define ADE7978_IPPHASE0 NO_OS_BIT(24)
243#define ADE7978_IPEAKVAL NO_OS_GENMASK(23, 0)
246#define ADE7978_VPPHASE2 NO_OS_BIT(26)
247#define ADE7978_VPPHASE1 NO_OS_BIT(25)
248#define ADE7978_VPPHASE0 NO_OS_BIT(24)
249#define ADE7978_VPEAKVAL NO_OS_GENMASK(23, 0)
252#define ADE7978_STATUS0_REVPSUM3 NO_OS_BIT(18)
253#define ADE7978_STATUS0_DREADY NO_OS_BIT(17)
254#define ADE7978_STATUS0_CF3 NO_OS_BIT(16)
255#define ADE7978_STATUS0_CF2 NO_OS_BIT(15)
256#define ADE7978_STATUS0_CF1 NO_OS_BIT(14)
257#define ADE7978_STATUS0_REVPSUM2 NO_OS_BIT(13)
258#define ADE7978_STATUS0_REVRPC NO_OS_BIT(12)
259#define ADE7978_STATUS0_REVRPB NO_OS_BIT(11)
260#define ADE7978_STATUS0_REVRPA NO_OS_BIT(10)
261#define ADE7978_STATUS0_REVPSUM1 NO_OS_BIT(9)
262#define ADE7978_STATUS0_REVAPC NO_OS_BIT(8)
263#define ADE7978_STATUS0_REVAPB NO_OS_BIT(7)
264#define ADE7978_STATUS0_REVAPA NO_OS_BIT(6)
265#define ADE7978_STATUS0_LENERGY NO_OS_BIT(5)
266#define ADE7978_STATUS0_VAEHF NO_OS_BIT(4)
267#define ADE7978_STATUS0_FREHF NO_OS_BIT(3)
268#define ADE7978_STATUS0_FAEHF NO_OS_BIT(1)
269#define ADE7978_STATUS0_AEHF NO_OS_BIT(0)
272#define ADE7978_STATUS1_CRC NO_OS_BIT(25)
273#define ADE7978_STATUS1_PKV NO_OS_BIT(24)
274#define ADE7978_STATUS1_PKI NO_OS_BIT(23)
275#define ADE7978_STATUS1_MISMTCH NO_OS_BIT(20)
276#define ADE7978_STATUS1_SEQERR NO_OS_BIT(19)
277#define ADE7978_STATUS1_OV NO_OS_BIT(18)
278#define ADE7978_STATUS1_OI NO_OS_BIT(17)
279#define ADE7978_STATUS1_SAG NO_OS_BIT(16)
280#define ADE7978_STATUS1_RSTDONE NO_OS_BIT(15)
281#define ADE7978_STATUS1_ZXIC NO_OS_BIT(14)
282#define ADE7978_STATUS1_ZXIB NO_OS_BIT(13)
283#define ADE7978_STATUS1_ZXIA NO_OS_BIT(12)
284#define ADE7978_STATUS1_ZXVC NO_OS_BIT(11)
285#define ADE7978_STATUS1_ZXVB NO_OS_BIT(10)
286#define ADE7978_STATUS1_ZXVA NO_OS_BIT(9)
287#define ADE7978_STATUS1_ZXTOIC NO_OS_BIT(8)
288#define ADE7978_STATUS1_ZXTOIB NO_OS_BIT(7)
289#define ADE7978_STATUS1_ZXTOIA NO_OS_BIT(6)
290#define ADE7978_STATUS1_ZXTOVC NO_OS_BIT(5)
291#define ADE7978_STATUS1_ZXTOVB NO_OS_BIT(4)
292#define ADE7978_STATUS1_ZXTOVA NO_OS_BIT(3)
293#define ADE7978_STATUS1_VANLOAD NO_OS_BIT(2)
294#define ADE7978_STATUS1_FNLOAD NO_OS_BIT(1)
295#define ADE7978_STATUS1_NLOAD NO_OS_BIT(0)
298#define ADE7978_MASK0_HREADY NO_OS_BIT(19)
299#define ADE7978_MASK0_REVPSUM3 NO_OS_BIT(18)
300#define ADE7978_MASK0_DREADY NO_OS_BIT(17)
301#define ADE7978_MASK0_CF3 NO_OS_BIT(16)
302#define ADE7978_MASK0_CF2 NO_OS_BIT(15)
303#define ADE7978_MASK0_CF1 NO_OS_BIT(14)
304#define ADE7978_MASK0_REVPSUM2 NO_OS_BIT(13)
305#define ADE7978_MASK0_REVFRPC NO_OS_BIT(12)
306#define ADE7978_MASK0_REVFRPB NO_OS_BIT(11)
307#define ADE7978_MASK0_REVFRPA NO_OS_BIT(10)
308#define ADE7978_MASK0_REVPSUM1 NO_OS_BIT(9)
309#define ADE7978_MASK0_REVAPC NO_OS_BIT(8)
310#define ADE7978_MASK0_REVAPB NO_OS_BIT(7)
311#define ADE7978_MASK0_REVAPA NO_OS_BIT(6)
312#define ADE7978_MASK0_LENERGY NO_OS_BIT(5)
313#define ADE7978_MASK0_VAEHF NO_OS_BIT(4)
314#define ADE7978_MASK0_FREHF NO_OS_BIT(3)
315#define ADE7978_MASK0_REHF NO_OS_BIT(2)
316#define ADE7978_MASK0_FAEHF NO_OS_BIT(1)
317#define ADE7978_MASK0_AEHF NO_OS_BIT(0)
320#define ADE7978_MASK1_CRC NO_OS_BIT(25)
321#define ADE7978_MASK1_PKV NO_OS_BIT(24)
322#define ADE7978_MASK1_PKI NO_OS_BIT(23)
323#define ADE7978_MASK1_MISMTCH NO_OS_BIT(20)
324#define ADE7978_MASK1_SEQERR NO_OS_BIT(19)
325#define ADE7978_MASK1_OV NO_OS_BIT(18)
326#define ADE7978_MASK1_OI NO_OS_BIT(17)
327#define ADE7978_MASK1_SAG NO_OS_BIT(16)
328#define ADE7978_MASK1_RSTDONE NO_OS_BIT(15)
329#define ADE7978_MASK1_ZXIC NO_OS_BIT(14)
330#define ADE7978_MASK1_ZXIB NO_OS_BIT(13)
331#define ADE7978_MASK1_ZXIA NO_OS_BIT(12)
332#define ADE7978_MASK1_ZXVC NO_OS_BIT(11)
333#define ADE7978_MASK1_ZXVB NO_OS_BIT(10)
334#define ADE7978_MASK1_ZXVA NO_OS_BIT(9)
335#define ADE7978_MASK1_ZXTOIC NO_OS_BIT(8)
336#define ADE7978_MASK1_ZXTOIB NO_OS_BIT(7)
337#define ADE7978_MASK1_ZXTOIA NO_OS_BIT(6)
338#define ADE7978_MASK1_ZXTOVC NO_OS_BIT(5)
339#define ADE7978_MASK1_ZXTOVB NO_OS_BIT(4)
340#define ADE7978_MASK1_ZXTOVA NO_OS_BIT(3)
341#define ADE7978_MASK1_VANLOAD NO_OS_BIT(2)
342#define ADE7978_MASK1_FNLOAD NO_OS_BIT(1)
343#define ADE7978_MASK1_NLOAD NO_OS_BIT(0)
346#define ADE7978_VSPHASE2 NO_OS_BIT(14)
347#define ADE7978_VSPHASE1 NO_OS_BIT(13)
348#define ADE7978_VSPHASE0 NO_OS_BIT(12)
349#define ADE7978_OVPHASE2 NO_OS_BIT(11)
350#define ADE7978_OVPHASE1 NO_OS_BIT(10)
351#define ADE7978_OVPHASE0 NO_OS_BIT(9)
352#define ADE7978_OIPHASE2 NO_OS_BIT(5)
353#define ADE7978_OIPHASE1 NO_OS_BIT(4)
354#define ADE7978_OIPHASE0 NO_OS_BIT(3)
357#define ADE7978_VANLPHASE2 NO_OS_BIT(8)
358#define ADE7978_VANLPHASE1 NO_OS_BIT(7)
359#define ADE7978_VANLPHASE0 NO_OS_BIT(6)
360#define ADE7978_FNLPHASE2 NO_OS_BIT(5)
361#define ADE7978_FNLPHASE1 NO_OS_BIT(4)
362#define ADE7978_FNLPHASE0 NO_OS_BIT(3)
363#define ADE7978_NLPHASE2 NO_OS_BIT(2)
364#define ADE7978_NLPHASE1 NO_OS_BIT(1)
365#define ADE7978_NLPHASE0 NO_OS_BIT(0)
368#define ADE7978_SELFREQ NO_OS_BIT(14)
369#define ADE7978_VNOMCEN NO_OS_BIT(13)
370#define ADE7978_VNOMBEN NO_OS_BIT(12)
371#define ADE7978_VNOMAEN NO_OS_BIT(11)
372#define ADE7978_ANGLESEL NO_OS_GENMASK(10, 9)
373#define ADE7978_TERMSEL3_2 NO_OS_BIT(8)
374#define ADE7978_TERMSEL3_1 NO_OS_BIT(7)
375#define ADE7978_TERMSEL3_0 NO_OS_BIT(6)
376#define ADE7978_TERMSEL2_2 NO_OS_BIT(5)
377#define ADE7978_TERMSEL2_1 NO_OS_BIT(4)
378#define ADE7978_TERMSEL2_0 NO_OS_BIT(3)
379#define ADE7978_TERMSEL1_2 NO_OS_BIT(2)
380#define ADE7978_TERMSEL1_1 NO_OS_BIT(1)
381#define ADE7978_TERMSEL1_0 NO_OS_BIT(0)
384#define ADE7978_CF3LATCH NO_OS_BIT(14)
385#define ADE7978_CF2LATCH NO_OS_BIT(13)
386#define ADE7978_CF1LATCH NO_OS_BIT(12)
387#define ADE7978_CF3DIS NO_OS_BIT(11)
388#define ADE7978_CF2DIS NO_OS_BIT(10)
389#define ADE7978_CF1DIS NO_OS_BIT(9)
390#define ADE7978_CF3SEL NO_OS_GENMASK(8, 6)
391#define ADE7978_CF2SEL NO_OS_GENMASK(5, 3)
392#define ADE7978_CF1SEL NO_OS_GENMASK(2, 0)
396#define ADE7978_PHCALVAL NO_OS_GENMASK(9, 0)
399#define ADE7978_SUM3SIGN NO_OS_BIT(8)
400#define ADE7978_SUM2SIGN NO_OS_BIT(7)
401#define ADE7978_CVARSIGN NO_OS_BIT(6)
402#define ADE7978_BVARSIGN NO_OS_BIT(5)
403#define ADE7978_AVARSIGN NO_OS_BIT(4)
404#define ADE7978_SUM1SIGN NO_OS_BIT(3)
405#define ADE7978_CWSIGN NO_OS_BIT(2)
406#define ADE7978_BWSIGN NO_OS_BIT(1)
407#define ADE7978_AWSIGN NO_OS_BIT(0)
410#define ADE7978_INSEL NO_OS_BIT(14)
411#define ADE7978_VTOIC NO_OS_GENMASK(13, 12)
412#define ADE7978_VTOIB NO_OS_GENMASK(11, 10)
413#define ADE7978_VTOIA NO_OS_GENMASK(9, 8)
414#define ADE7978_SWRST NO_OS_BIT(7)
415#define ADE7978_HSDCEN NO_OS_BIT(6)
416#define ADE7978_LPFSEL NO_OS_BIT(5)
417#define ADE7978_HPFEN NO_OS_BIT(4)
418#define ADE7978_SWAP NO_OS_BIT(3)
419#define ADE7978_ZX_DREADY NO_OS_GENMASK(1, 0)
422#define ADE7978_PEAKSEL2 NO_OS_BIT(4)
423#define ADE7978_PEAKSEL1 NO_OS_BIT(3)
424#define ADE7978_PEAKSEL0 NO_OS_BIT(2)
425#define ADE7978_REVRPSEL NO_OS_BIT(1)
426#define ADE7978_REVAPSEL NO_OS_BIT(0)
429#define ADE7978_SAGCFG NO_OS_BIT(6)
430#define ADE7978_CONSEL NO_OS_GENMASK(5, 4)
431#define ADE7978_VARACC NO_OS_GENMASK(3, 2)
432#define ADE7978_WATTACC NO_OS_GENMASK(1, 0)
435#define ADE7978_PFMODE NO_OS_BIT(7)
436#define ADE7978_RSTREAD NO_OS_BIT(6)
437#define ADE7978_ZXSEL2 NO_OS_BIT(5)
438#define ADE7978_ZXSEL1 NO_OS_BIT(4)
439#define ADE7978_ZXSEL0 NO_OS_BIT(3)
440#define ADE7978_LVA NO_OS_BIT(2)
441#define ADE7978_LVAR NO_OS_BIT(1)
442#define ADE7978_LWATT NO_OS_BIT(0)
445#define ADE7978_HSAPOL NO_OS_BIT(5)
446#define ADE7978_HXFER NO_OS_GENMASK(4, 3)
447#define ADE7978_HGAP NO_OS_BIT(2)
448#define ADE7978_HSIZE NO_OS_BIT(1)
449#define ADE7978_HCLK NO_OS_BIT(0)
452#define ADE7978_ADE7933_SWRST NO_OS_BIT(7)
453#define ADE7978_CLKOUT_DIS NO_OS_BIT(6)
454#define ADE7978_VN2_EN NO_OS_BIT(3)
455#define ADE7978_VC2_EN NO_OS_BIT(2)
456#define ADE7978_VB2_EN NO_OS_BIT(1)
457#define ADE7978_VA2_EN NO_OS_BIT(0)
460#define ADE7978_I2C_LOCK NO_OS_BIT(0)
463#define IS_8BITS_REG(x) ((x >= ADE7978_REG_MMODE && x <= ADE7978_REG_LAST_RWDATA8) \
464 || (x >= ADE7978_REG_CONFIG2 && x <= ADE7978_SET_SPI_ADDR))
463#define IS_8BITS_REG(x) ((x >= ADE7978_REG_MMODE && x <= ADE7978_REG_LAST_RWDATA8) \ …
465#define IS_16BITS_REG(x) ((x >= ADE7978_REG_PHSTATUS && x <= ADE7978_REG_CONFIG) \
466 || (x >= ADE7978_REG_APF && x <= ADE7978_REG_LAST_RWDATA16) \
467 || (x == ADE7978_REG_RUN))
465#define IS_16BITS_REG(x) ((x >= ADE7978_REG_PHSTATUS && x <= ADE7978_REG_CONFIG) \ …
468#define ADE7978_CHIP_ID 0x0E88
469#define ADE7978_RESET_RECOVER 100
470#define ADE7978_SET_SPI_ADDR 0xEBFF
471#define ADE7978_DUMB_VAL 0x01
472#define ADE7978_RAM_PROTECTION1 0xE7FE
473#define ADE7978_RAM_PROTECTION2 0xE7E3
474#define ADE7978_RAM_PROT_VAL1 0xAD
475#define ADE7978_RAM_PROT_VAL2 0x80
479#define ADE7978_RUN_ON 0x0001
483#define ADE7978_WAVE_FS_CODES 5320000
484#define ADE7978_RMS_FS_CODES 3761808
487#define ADE7978_FS_VOLTAGE_RMS 3535
489#define ADE7978_FS_CURRENT_RMS 22094
491#define ADE7978_FS_CURRENT 31250
493#define ADE7978_FS_VOLTAGE 500
715 uint32_t mask, uint32_t reg_data);
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
ade7978_varacc_e
ADE7978 These bits decide the accumulation mode of funamental reactive powers.
Definition ade7978.h:599
@ ADE7978_VARACC_SIGNED_ACC
Definition ade7978.h:601
@ ADE7978_VARACC_SIGN_WATTACC
Definition ade7978.h:606
@ ADE7978_VARACC_ABSOLUTE_ACC
Definition ade7978.h:608
@ ADE7978_VARACC_RESERVED
Definition ade7978.h:603
int ade7978_get_int_status0(struct ade7978_dev *dev, uint32_t msk, uint8_t *status)
Get interrupt indicator from STATUS0 register.
Definition ade7978.c:162
ade7978_vtoia_e
ADE7978 These bits decide what phase voltage is considered together with Phase A current in the power...
Definition ade7978.h:538
@ ADE7978_VTOIA_B
Definition ade7978.h:542
@ ADE7978_VTOIA_A
Definition ade7978.h:540
@ ADE7978_VTOIA_C
Definition ade7978.h:544
ade7978_wattacc_e
ADE7978 These bits decide the accumulation mode of fundamental active powers.
Definition ade7978.h:580
@ ADE7978_WATTACC_POSITIVE_ACC
Definition ade7978.h:586
@ ADE7978_WATTACC_RESERVED
Definition ade7978.h:588
@ ADE7978_WATTACC_SIGNED_ACC
Definition ade7978.h:583
@ ADE7978_WATTACC_ABSOLUTE_ACC
Definition ade7978.h:591
int ade7978_read_data_ph(struct ade7978_dev *dev, enum ade7978_phase phase)
Read the measurements for specific phase.
Definition ade7978.c:213
ade7978_consel_e
ADE7978 These bits select the inputs to the energy accumulation registers. IA’, IB’,...
Definition ade7978.h:617
@ ADE7978_CONSEL_3P_3W
Definition ade7978.h:619
@ ADE7978_CONSEL_3P_4W_DELTA
Definition ade7978.h:623
@ ADE7978_CONSEL_3P_3W_DELTA
Definition ade7978.h:621
int ade7978_write(struct ade7978_dev *dev, uint16_t reg_addr, uint32_t reg_data)
Write device register.
Definition ade7978.c:98
ade7978_cfxsel_e
ADE7978 These bits indicate the value the CFx frequency is proportional to.
Definition ade7978.h:500
@ ADE7978_CFXSEL_1
Definition ade7978.h:506
@ ADE7978_CFXSEL_2
Definition ade7978.h:509
@ ADE7978_CFXSEL_4
Definition ade7978.h:515
@ ADE7978_CFXSEL_0
Definition ade7978.h:503
@ ADE7978_CFXSEL_3
Definition ade7978.h:512
ade7978_vtoib_e
ADE7978 These bits decide what phase voltage is considered together with Phase B current in the power...
Definition ade7978.h:552
@ ADE7978_VTOIB_B
Definition ade7978.h:554
@ ADE7978_VTOIB_A
Definition ade7978.h:558
@ ADE7978_VTOIB_C
Definition ade7978.h:556
ade7978_freq_sel_e
ADE7978 Freq value.
Definition ade7978.h:652
@ ADE7978_SELFREQ_60
Definition ade7978.h:656
@ ADE7978_SELFREQ_50
Definition ade7978.h:654
int ade7978_update_bits(struct ade7978_dev *dev, uint16_t reg_addr, uint32_t mask, uint32_t reg_data)
Update specific register bits.
Definition ade7978.c:138
int ade7978_remove(struct ade7978_dev *dev)
Remove the device and release resources.
Definition ade7978.c:543
ade7978_phase
ADE7978 available phases.
Definition ade7978.h:663
@ ADE7978_PHASE_B
Definition ade7978.h:665
@ ADE7978_PHASE_C
Definition ade7978.h:666
@ ADE7978_PHASE_A
Definition ade7978.h:664
int ade7978_setup(struct ade7978_dev *dev)
Setup the device.
Definition ade7978.c:399
int ade7978_get_int_status1(struct ade7978_dev *dev, uint32_t msk, uint8_t *status)
Get interrupt indicator from STATUS1 register.
Definition ade7978.c:188
ade7978_vtoic_e
ADE7978 These bits decide what phase voltage is considered together with Phase C current in the power...
Definition ade7978.h:566
@ ADE7978_VTOIC_A
Definition ade7978.h:570
@ ADE7978_VTOIC_B
Definition ade7978.h:572
@ ADE7978_VTOIC_C
Definition ade7978.h:568
int ade7978_init(struct ade7978_dev **device, struct ade7978_init_param init_param)
Initialize the device.
Definition ade7978.c:298
ade7978_zx_dready_e
ADE7978 These bits manage the output signal at the ZX/DREADY pin.
Definition ade7978.h:522
@ ADE7978_ZX_PHASE_A
Definition ade7978.h:526
@ ADE7978_DREADY_EN
Definition ade7978.h:524
@ ADE7978_ZX_PHASE_B
Definition ade7978.h:528
@ ADE7978_ZX_PHASE_C
Definition ade7978.h:530
ade7978_hxfer_e
ADE7978 These bits select the data transmitted on HSDC.
Definition ade7978.h:630
@ ADE7978_HXFER_7
Definition ade7978.h:638
@ ADE7978_HXFER_RESERVED
Definition ade7978.h:645
@ ADE7978_HXFER_16
Definition ade7978.h:634
@ ADE7978_HXFER_9
Definition ade7978.h:642
int ade7978_read(struct ade7978_dev *dev, uint16_t reg_addr, uint32_t *reg_data)
Read device register.
Definition ade7978.c:48
Header file of GPIO Interface.
Header file of SPI Interface.
Header file of utility functions.
ADE7978 Device structure.
Definition ade7978.h:686
uint32_t temperature
Definition ade7978.h:698
uint32_t v2rms_val
Definition ade7978.h:696
uint32_t vrms_val
Definition ade7978.h:694
uint32_t irms_val
Definition ade7978.h:692
uint8_t temp_en
Definition ade7978.h:700
struct no_os_gpio_desc * reset_desc
Definition ade7978.h:690
struct no_os_spi_desc * spi_desc
Definition ade7978.h:688
struct no_os_irq_ctrl_desc * irq_ctrl
Definition ade7978.h:702
ADE7978 Device initialization parameters.
Definition ade7978.h:673
struct no_os_gpio_desc * reset_desc
Definition ade7978.h:677
uint8_t temp_en
Definition ade7978.h:679
struct no_os_spi_init_param * spi_init
Definition ade7978.h:675
Definition ad9361_util.h:63
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Definition no_os_irq.h:117
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128