Commit graph

37046 commits

Author SHA1 Message Date
Andriy Gapon
0aee3bdc56 superio: add a simple ioctl interface
MFC after:	1 week
2019-10-25 16:07:24 +00:00
Andriy Gapon
dbb15ea500 owc_gpiobus: add missing space in r354077 2019-10-25 15:46:54 +00:00
Andriy Gapon
b8c776ba02 owc_gpiobus_read_data: add recovery time to the read slot
Reviewed by:	imp
MFC after:	2 weeks
2019-10-25 15:39:46 +00:00
Andriy Gapon
bb7b803bf2 owc_gpiobus_read_data: compare times in sbintime_t units
Previously the code used sbttous() before microseconds comparison in one
place, sbttons() and nanoseconds in another, division by SBT_1US and
microseconds in yet another.

Now the code consistently uses multiplication by SBT_1US to convert
microseconds to sbintime_t before comparing them with periods between
calls to sbinuptime().  This is fast, this is precise enough (below
0.03%) and the periods defined by the protocol cannot overflow.

Reviewed by:	imp (D22108)
MFC after:	2 weeks
2019-10-25 15:38:09 +00:00
Andriy Gapon
c1750b821b owc_gpiobus_read_data: disable preemption earlier
Now this is done before starting the low pulse that has rather tight
timing.

Reviewed by:	imp (D22108)
MFC after:	2 weeks
2019-10-25 14:20:59 +00:00
Andriy Gapon
46ecf8e0bc ow_temp: better scopes for the lock
The lock is used only for start / stop signaling.
It is used only for 'flags' field and the related condition variable.

This change is a follow-up to r354067, it was suggested by Warner in
D22107.

Suggested by:	imp
MFC after:	1 week
2019-10-25 13:47:17 +00:00
Andriy Gapon
f17aea5366 ow_temp: drop the lock around a call that can sleep
This is similar to what is done around other calls that lead to
own_command_wait() that can sleep.

Reviewed by:	imp
MFC after:	1 week
Differential Revision: https://reviews.freebsd.org/D22107
2019-10-25 13:42:36 +00:00
Andriy Gapon
ab0a202863 gpioiic: set output after switching to output mode if presetting it failed
Some controllers cannot preset future output value while the pin is in
input mode.  This adds a fallback for those controllers.  The new code
assumes that a controller reports an error in that case.

For example, all hardware supported by nctgpio behaves in that way.

This is a temporary measure.  In the future we will use
GPIO_PIN_PRESET_LOW / GPIO_PIN_PRESET_HIGH to preset the output either
in hardware, if supported, or in software (e.g., in
gpiobus_pin_setflags).

While here, I extracted common functionality of gpioiic_set{sda,scl} and
gpioiic_get{sda,scl} to gpioiic_setpin and gpioiic_getpin respectively.

MFC after:	2 weeks
2019-10-25 09:37:54 +00:00
Mark Johnston
87382b222f Set OBJ_NOSPLIT on the ksyms(4) VM object.
The object does not provide anonymous memory.

Reported by:	kib
Reviewed by:	kib
MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D22123
2019-10-23 16:53:37 +00:00
Emmanuel Vadot
a601368040 regulator: Add a regnode_set_constraint function
This method check that boot_on or always_on is set to 1 and if it
is it will try to enable the regulator.
The binding docs aren't clear on what to do but Linux enable the regulator
if any of those properties is set so we want to do the same.
The function first check the status to see if the regulator is
already enabled it then get the voltage to check if it is in a acceptable
range and then enables it.
This will be either called from the regnode_init method (if it's needed by the platform)
or by a SYSINIT at SI_SUB_LAST

Reviewed by:	mmel
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D22106
2019-10-23 09:56:53 +00:00
Emmanuel Vadot
a24735546b regulator: Add a regnode_method_init
This is a default init method for regulator that don't really
need one.

MFC after:	1 week
2019-10-23 09:54:12 +00:00
John Baldwin
e38a50e8b6 Split Chelsio send tags into a generic base tag and a ratelimit tag.
NIC KTLS will add a new TLS send tag type in cxgbe(4) that is a
distinct tag from a ratelimit tag.  To support this, refactor
cxgbe_snd_tag to be a simple send tag with a type and convert the
existing ratelimit tag to a new cxgbe_rate_tag structure.

Reviewed by:	np
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D22072
2019-10-22 20:41:54 +00:00
John Baldwin
866a7f286f Always allocate the atid table during attach.
Previously the table was allocated on first use by TOE and the
ratelimit code.  The forthcoming NIC KTLS code also uses this table.
Allocate it unconditionally during attach to simplify consumers.

Reviewed by:	np
Differential Revision:	https://reviews.freebsd.org/D22028
2019-10-22 20:01:47 +00:00
Andriy Gapon
155514eacf nctgpio: improve performance (latency) of operation
This change consists of two parts.

First, nctgpio now supports hardware access via an I/O port window if
it's configured by firmware.  For instance, PC Engines firmware
v4.10.0.2 does that.  This is faster than going through the Super I/O
configuration registers.

Second, nctgpio now caches values of bits that it controls.  For
example, the driver does not need to access the hardware to determine if
a pin is an output or an input, or a state of an output.  Also, the
driver makes use of the fact that the hardware preserves an output state
of a pin accross a switch to the input mode and back.

With this change I am able to use the 1-Wire bus over nctgpio whereas
previously the driver introduced too much latency to be compliant with
the relatively strict protocol timings.

superio0: <Nuvoton NCT5104D/NCT6102D/NCT6106D (rev. B+)> at port 0x2e-0x2f on isa0
gpio1: <Nuvoton GPIO controller> at GPIO ldn 0x07 on superio0
pcib0: allocated type 4 (0x220-0x226) for rid 0 of gpio1
gpiobus1: <GPIO bus> on gpio1
owc0: <GPIO attached one-wire bus> at pin 4 on gpiobus1
ow0: <1 Wire Bus> on owc0
ow0: romid 28:b2:9e:45:92:10:02:34: no driver
ow_temp0: <Advanced One Wire Temperature> romid 28:b2:9e:45:92:10:02:34 on ow0

MFC after:	4 weeks
2019-10-22 14:20:35 +00:00
Gleb Smirnoff
4d50c26a10 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:58 +00:00
Gleb Smirnoff
c3cf8a054b Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:40 +00:00
Gleb Smirnoff
5c973840f1 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:36 +00:00
Gleb Smirnoff
bc0bdf25c7 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:31 +00:00
Gleb Smirnoff
6dfd087076 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:26 +00:00
Gleb Smirnoff
a4589b2d1a Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:21 +00:00
Gleb Smirnoff
854d87acf2 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:17 +00:00
Gleb Smirnoff
fe8a3369a8 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:12 +00:00
Gleb Smirnoff
2066c71656 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:07 +00:00
Gleb Smirnoff
7384b10ff1 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:12:02 +00:00
Gleb Smirnoff
55b4d627f8 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:58 +00:00
Gleb Smirnoff
9602d60039 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:54 +00:00
Gleb Smirnoff
660d39418f Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:48 +00:00
Gleb Smirnoff
119a6396ca Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:43 +00:00
Gleb Smirnoff
745894d7e5 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:38 +00:00
Gleb Smirnoff
57cc02c62e Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:32 +00:00
Gleb Smirnoff
36581f8254 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:28 +00:00
Gleb Smirnoff
c42980268b Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:24 +00:00
Gleb Smirnoff
3e346c0a6c Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:19 +00:00
Gleb Smirnoff
51e8082055 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:15 +00:00
Gleb Smirnoff
02cc07d105 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:11 +00:00
Gleb Smirnoff
8bd97b0772 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:08 +00:00
Gleb Smirnoff
95f4453e15 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:11:02 +00:00
Gleb Smirnoff
bdf4b0ae33 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:10:58 +00:00
Gleb Smirnoff
dbf9bf044c Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:10:52 +00:00
Gleb Smirnoff
5b7a9eab16 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:10:46 +00:00
Gleb Smirnoff
380a564dc2 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:08:25 +00:00
Gleb Smirnoff
5d0c611c51 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:08:20 +00:00
Gleb Smirnoff
0a3c7ec0f4 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:08:16 +00:00
Gleb Smirnoff
44a30c6224 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:08:12 +00:00
Gleb Smirnoff
0407b8bf7a Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:08:03 +00:00
Gleb Smirnoff
e9c5104f43 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:07:56 +00:00
Gleb Smirnoff
f2921d4c06 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:07:53 +00:00
Gleb Smirnoff
0ae47039de Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:07:49 +00:00
Gleb Smirnoff
33253a3794 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:07:44 +00:00
Gleb Smirnoff
9c0d672823 Convert to if_foreach_llmaddr() KPI. 2019-10-21 18:07:40 +00:00