Age | Commit message (Collapse) | Author |
|
only supports 32-bit access (hello Raspberry Pi).
ok tobhe@
|
|
only supports 32-bit access (hello Raspberry Pi).
ok tobhe@
|
|
with filenames constructed from the first compatible string of the root
node. Matches the format used in the linux-firmware repository.
If these are not found fallback to the generic filenames.
When the compatible string contains a '/' as in 'solidrun,cubox-i/q' it
will be handled as everything before the '/' so the cubox filename is
brcmfmac4330-sdio.solidrun,cubox-i.txt.
ok kurt@ patrick@
|
|
From Rob Schmersel
|
|
reduces the amount of duplicated lines per chip, and allows us to ship per-
board files in the future.
Based on a diff from jsg@
ok kurt@
|
|
|
|
external tool to pre-process the NVRAM, even though it's simple to
do ourselves. This allows easier firmware distribution.
ok kurt@
|
|
This reduces drops caused by the ifq pressure drop mechanism and hence
increases throughput.
ok tobhe@
|
|
throat of physio().
Allows individual devices to eventually be modified to support larger
physio() (a.k.a. 'raw') i/o's if they prove capable of them.
No immediate functional change.
Tested for many weeks by and ok robert@.
|
|
scsi drivers. i.e. eliminate the struct scsi_adapter member in the
softc and rely on the pointer to a static scsi_adapter in the struct
scsi_link member.
|
|
inducing. Rename scsi_adapter member 'scsi_minphys' to 'dev_minphys'
to reflect what it is supposed to do. Use consistent naming convention
(<dev>_minphys) for the actual device functions.
No functional change.
|
|
system minphys(). scsi_minphys() will do that and cd/sd/st will call
scsi_minphys().
ok jmatthew@ as part of larger diff
|
|
as shipped with the Pinebook Pro as an AMPAK AP6256 module.
|
|
ok tedu
|
|
ok kn@
|
|
Makes hibernate work with rootfs on built-in emmc storage.
Tested on King Jim Portabook.
ok deraadt@ kettenis@
|
|
error cases.
|
|
allocate a cluster if the message is larger than that. Fixes a panic
on shutdown on my Asus X205TA.
ok patrick@, stsp@
|
|
controller can handle for DMA tranfers, since not all support 64k.
ok kettenis@
|
|
on header fields that aren't initialized, which may trigger an assertion.
Check whether the control message doesn't exceed MLEN instead and turn the
check into a KASSERT as the driver should not generate control messages
that are larger.
with help form claudio@ (who points out that the driver should not use
MT_CONTROL here).
ok patrick@
|
|
m_leadingspace() and m_trailingspace(). Convert all callers to call
directly the functions and remove the defines.
OK krw@, mpi@
|
|
tested in snaps
ok kettenis@
|
|
|
|
devices. This allows SDIO device drivers to read information from
the ACPI or FDT tables.
ok kettenis@
|
|
and thus only supported 4 functions instead of 8.
ok kettenis@
|
|
slow booting up, so give it a bit longer to enable the clock.
ok patrick@
|
|
sent in order. Otherwise it is possible that the key is set before
we send out the EAPOL packet, or that packets are sent out before
the key is set. Thus modify the SDIO backend to put both types into
the same internal TX queue, which will be sent asynchronously.
Discussed with bluhm@
|
|
|
|
another packet (even though nextlen is set to none) to issue more RX
interrupts.
|
|
instead of from a task. The sdmmc(4) interrupt handler is already
executed in process context and returning from the interrupt handler
without acknowledging the interrupts may lead to an interrupt storm.
ok patrick@
|
|
is only bumped if the high-speed mode is available.
ok kettenis@
|
|
local variable dangling, so calculate the lock address by hand at invocation
ok kettenis
|
|
mode, so switch from 1-bit to 4-bit bus width if the host controller
supports it.
ok kettenis@
|
|
ok kettenis@
|
|
sdmmc_io_rw_extended() function and loading the passed buffer
using the bus dma API akin to the SDMMC memory card code. The
2-byte and 4-byte accessors continue to use PIO.
ok kettenis@
|
|
to send/receive data. This basically means that we cannot use any
malloc(9)'d buffer. For this, use dma_alloc(9) to allocate a buf
that can fit a whole SDIO frame (unfortunately without headers).
Keep note that we need to round up the transfer sizes to block-
sized (for TX packets) or 4-byte alignment, since some DMA con-
trollers truncate the request size. If there's anything wrong,
the KASSERTs will catch it.
ok kettenis@
|
|
SDHC controllers get confused if the ADMA bit is set even though we
don't set the DMA enable flag. This can happen with the SDIO stack
which uses PIO for 4 byte read/writes but DMA for larger transfers
and thus switches from one mode to the other.
ok kettenis@
|
|
ok patrick@
|
|
ok patrick@
|
|
copied. This severely limits the speed over the bus. By using
block mode we can issue block-sized transfers, which bumps the
transfer size to at least 512 bytes. By using multi-block mode
we can copy up to 511 blocks per transfer.
ok kettenis@
|
|
this is only for memory card read/writes.
ok kettenis@
|
|
by florian@ when firmware isn't present initially.
|
|
and initialize bwfm(4) later in the case that the firmware was not
available on bootup and was only later installed.
ok stsp@
|
|
|
|
ok stsp@
|
|
firmware requires on SDIO-connected chips.
From ketttenis@
|
|
over the SDIO bus by accessing the correct addresses. This helped
me find the RX FIFO overflow issue and might help find more issues
where the chip's firmware complains about our wrongdoing.
|
|
plus hardware header, which tell us the length of the following data),
we can issue full packet reads. The software header contains a field
that informs us of the full length of the next frame that we can read,
so we can do that in a single sitting. This brings us down from three
SDIO read invocation to a single one per packet for a given RX stream.
|
|
of those is a sequence number based window mechanism. Essentially every
packet on the SDIO bus has a sequence number. The chip records which
sequence number we used last and when it sends us replies, it tells us
the maximum sequence number it accepts. This means we can calculate a
window of sequence numbers that we are allowed to use. With this I no
longer overflow the chip's RX fifo and can do stable network transfers.
|
|
the caller. Otherwise we skip restarting the ifq which means that if
we ever have a full queue and go oactive, there is no coming back. So
break out from the loop and call ifq restart if the queue is not full.
|