NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/52848: Enhacement: two environment sensor drivers. AM2315 and SI70xx



>Number:         52848
>Category:       kern
>Synopsis:       Enhacement: two environment sensor drivers.  AM2315 and SI70xx
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 23:50:00 +0000 2017
>Originator:     Brad Spencer
>Release:        8.99.3
>Organization:
	Eldar.org
>Environment:
NetBSD erebor.nat.eldar.org 8.99.3 NetBSD 8.99.3 (RPI3) #1: Sun Nov  5 06:48:26 EST 2017  brad%gimli.nat.eldar.org@localhost:/usr/src/sys/arch/evbarm/compile/RPI3 evbarm
Architecture: evbarm
Machine: evbarm
>Description:

This is an enhancement that contains two device drivers for a couple
of environment sensors that are available as breakout boards from
Adafruit and/or Sparkfun.  The following is included in this
enhancement:

* Driver, man page, module glue for the Aosong AM2315 sensor via I2C bus.

* Driver, man page, module glue for the Silicon Labs
  SI7013/SI7020/SI7021 and HTU21D [probably] via I2C bus.  This driver
  supports all of the functions of the SI7021, including the heater.
  The other chip variants were not tested, but likely work.  The
  second ADC on SI7013 is not supported.

* One line bug fix for the Broadcom I2C controller found in the
  Raspberry PI.  If you do not apply this one line fix up, the SI70xx
  driver will do a KASSERT() that is not really needed.

To apply the patch:

* check out a clean source tree from around the 8.99.3 time frame,
although except for the bcm2835_bsc.c fix, it will probably apply to
-current.

* unpack the uuencoded bzip tar file included here

* run ./install_sensor_1 /top/of/source/tree

Each file that is patched or installed has it own .diff.


This was all developed on a Raspberry PI 3 mostly using the Broadcom
I2C controller, although it was also tested with gpioiic.  The SI70xx
device appears to work with gpioiic, the AM2315 did not.

>How-To-Repeat:

Try to use a AM2315 or SI7021 and find out you do not have a driver for them.

>Fix:

begin 664 env_sensors_1.tar.bz2
M0EIH.3%!629369K<M+P`*I-_O_[Z`$!______^________\0!``0``@(00(0
M`(D!"&!*_O=OKAIYO;@W8%+FCN\J+VR[9[G=S)VN5WK*Z=!EVVRV2:!MW2'2
M;WO./7NZKR;8NZ#LX8W6X%ZY>ZU7:3TU0H:K5#1H:#O>UT`'0``````4`!VM
M<8]/>T\W0=4:T`]`ZZ:'EVYNH+MV,I>PT[;*\U%'.RV4&A0LP!KIUKEIK;`H
M"N[."2:%[PYZKVQ"#1Q4#G6Z!T71I!82A)H9`3%,$RGH:)D]#2GHR$P3334?
MJ@T`'J:>D>B/2`!HT>4$D$$!!,0$PAI,D]4>U3]3U$T],1J:8U&U/2&F3U`-
M,AIH`-`.````:````:`&@`!H``&@````2:2)$*GF1H(U/4\"I^J?IJGIJ#U&
MVH-)H`:``&CU!H````1)$0F28F)B;2:,"IY/1J:8IB!Z'J:3U#3U/$30`&@`
M``"HHA`1H`F@(T!,F1H0R&A3]3*?H:31ZIIZC0!H&FAZ@-#/2">M_]%>YJO#
MW%#EQ+D@?@!(4Q8H3,0DD]7H54@)`H0Y'+V'3[+071[3XKKOE!#"#THNR$UP
M1@1>!K883&%XI5K0<NP(QJ.7KTC:(,-X@B5$D2HE*+%+DB*L1)+4+:J24BDI
M+$@B1&1"R'R-(IM_D^:&+F<'&"Y%61(+$#Z`"A8(4!*;%GCDXP134EGWRE_&
M%$8LB4H4+)&`"C!(B(L#^<2LD6+((,$8HH?*)0!A$/TBA]T9)VP^]VG7_%MO
MBKM_C96H5-&G1L/U%1S>5JVX(;Z?G?*P30K%.#`&4DHPK)]\AD)X4AD#9`:B
M1@B"AX2492<8QL`YWJR$G^'+LOL^<\?P;NQ2NS^JC1HM?TV3JHS,(JAF4/3<
M[>*1"T/&M9($@@XHC3H=34>N2UR_-1>@N=!=U!8H+KTY8.^E\F+!;P_/$?8'
M56>K^:)'Q7<E)B_[#VG%CZWJ-7Q)$P6N$RI9X["WO^$#%)JBIB.DZ&!@\Y9Q
M_QYJ#V'`:12LD0(GH%L.FH@localhost!Z7+6Y)W#"L,#`6]O50[-&R"(<%*<K*Z#5U-&Q
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
M(12B8`"J,8*"]T#TGKB9VS[`&XG%X.WQW@localhost[V$[,Y]U*O-+PD/05Q=H&(\N!"Q
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
M,^F#"R15;*,63B)Z3Y?FMR^9/Q1@^43ZI_01_IX^*.S&*J%&LB.%CX1.RO@localhost$1
M_#2)N$$+0081#B-LI1L0C-4D2D^,^P=IW_$,U,+*4T9L])86*3Y0H&B*QZ._
M(20FIB35,7NADX^,Y.-J;1NH&R/PG9U$#XJ:".1$]QUTG6)65LD04S`]FR&Z
MQ2&"H;QAC.3D-H[J.9=RR:H]>YVG(%\[)D[>UASVE/]Q&4_,LDRWNQF1,C$K
M7(D&.@8>V8FPD.L?(B?,GE,Q>Z-_"5AVZ1&_S5G#QF8A$#29!H^!5;E,,"R.
M\W'"VI5LBH^QB)C<WQ++*BQ92)94-J8!A%A@G8D3&(LED290D>U/L5?AY2QX
MX9'X98\]<KKAD\(>R,2>8SD:_`XJW-[=$;DTDT'X-X>B-;$0<MI/,GD[BB2/
M]2A_M2JH/T@][I2P1"'C!/(E")1"#0EFP6DPPR(C9*0R6EI9/>)WTGN#G(2?
+_B[DBG"A(36Y:7BP
`
end



Home | Main Index | Thread Index | Old Index