summaryrefslogtreecommitdiffstats
path: root/sys/dev/sdmmc
AgeCommit message (Collapse)AuthorFilesLines
2020-06-19Add support for BCM4359 SDIO variants such as the AP6359SA module foundkettenis1-1/+5
on the RockPro64 WiFi module. Note that there is no fiirmware for this chip in the bwfm-firmware package at the moment. ok patrick@
2020-06-14Make sure SDHC_HOST_CTL2 is consistently controlled using 2-byte accesses,patrick1-2/+2
otherwise it would lead to unaligned memory access. Fixes a panic on my MACCHIATObin. ok kettenis@
2020-05-22Add pre/post hooks for bus clock changes to sdhc(4). These will bepatrick2-2/+10
used by sdhc(4) attachment drivers to do additional MD initialization. ok kettenis@
2020-05-15Some newer bwfm(4) chips from Cypress hold their regulatorypatrick1-1/+12
constraints in a separate blob, instead of in the firmware. This .clm_blob needs to be loaded as well.
2020-05-13sdhc(4), sdmmc(4): tsleep(9) -> tsleep_nsec(9); ok patrick@cheloha2-18/+19
2020-04-29According to the SDIO Simplified Specification 3.0, a tuple lengthpatrick1-7/+1
(aka link field) of 0 specifies an empty tuple body. This implies that a tuple length of 0 is actually allowed, so we don't need to error out if we encounter one. Seen on an SDIO-connected ath10k. ok kettenis@
2020-04-27fix SDHC_DEBUG build, remove procname printf'sians1-5/+4
ok kettenis@
2020-04-19Add comments to clarify the hex IDs of some bwfm(4) devices on SD bus.stsp1-7/+7
ok jmc@ deraadt@ kettenis@ "thanks and don't wait for me" patrick@
2020-04-19Add support for hardware where an SDHC controller lives on a bus thatkettenis1-1/+2
only supports 32-bit access (hello Raspberry Pi). ok tobhe@
2020-04-19Add support for hardware where an SDHC controller lives on a bus thatkettenis1-21/+107
only supports 32-bit access (hello Raspberry Pi). ok tobhe@
2020-03-14On fdt platforms attempt to load system specific .txt and .bin filesjsg1-15/+71
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@
2020-03-13Recognize BCM43341 as a BCM43340 variant.patrick1-1/+2
From Rob Schmersel
2020-03-07Use snprintf(9) to create the names for the firmware and NVRAM files. Thispatrick1-55/+38
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@
2020-03-06Fixup bwfm(4) register bit regarding SDIO device suspend/resume.patrick1-2/+2
2020-03-06Process the NVRAM in bwfm(4) itself. So far we have relied on somepatrick1-6/+30
external tool to pre-process the NVRAM, even though it's simple to do ourselves. This allows easier firmware distribution. ok kurt@
2020-02-25Make bwfm(4) call if_input() only once per interrupt.patrick1-14/+18
This reduces drops caused by the ifq pressure drop mechanism and hence increases throughput. ok tobhe@
2020-02-20Relax the grip the dead hand of QBUS (a.k.a. MAXPHYS) has on thekrw1-1/+3
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@.
2020-02-12Bring a few stragglers into line with the idiom used by the other 40+krw1-6/+6
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.
2020-01-26Shuffle some names around to make reading the code less headachekrw1-4/+4
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.
2020-01-25Drivers that implement their own *minphys() don't need to call thekrw1-3/+1
system minphys(). scsi_minphys() will do that and cd/sd/st will call scsi_minphys(). ok jmatthew@ as part of larger diff
2020-01-22Recognize BCM4345 rev 9, which requires a different firmware,patrick1-3/+8
as shipped with the Pinebook Pro as an AMPAK AP6256 module.
2020-01-22delete wasteful ;;deraadt1-3/+3
ok tedu
2019-12-31Convert infinite sleeps to {m,t}sleep_nsec(9).mpi2-5/+5
ok kn@
2019-04-02Don't detach non-removable devices during resume on "sdhc* at acpi?".stsp4-5/+11
Makes hibernate work with rootfs on built-in emmc storage. Tested on King Jim Portabook. ok deraadt@ kettenis@
2019-02-07Consistently use m_freem(9). This fixes possible leaks in a fewpatrick1-2/+2
error cases.
2019-02-04Turns out we do need to handle control messages that exceed MLEN, sokettenis1-6/+15
allocate a cluster if the message is larger than that. Fixes a panic on shutdown on my Asus X205TA. ok patrick@, stsp@
2018-12-29Allow passing the maximum size of a segment that a SD/MMC hostpatrick3-4/+8
controller can handle for DMA tranfers, since not all support 64k. ok kettenis@
2018-12-22Avoid using m_trailingspace(9) on an mbuf allocated with MGET(9) as it relieskettenis1-2/+4
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@
2018-11-09M_LEADINGSPACE() and M_TRAILINGSPACE() are just wrappers forclaudio1-2/+2
m_leadingspace() and m_trailingspace(). Convert all callers to call directly the functions and remove the defines. OK krw@, mpi@
2018-09-06Implement 64-bit DMA support in sdhc(4).patrick2-10/+39
tested in snaps ok kettenis@
2018-08-09Implement out-of-band interrupt support in the bwfm(4) SDIO backend.patrick1-1/+45
2018-08-09Allow passing per-function cookies through the SD/MMC bus to SDIOpatrick4-4/+11
devices. This allows SDIO device drivers to read information from the ACPI or FDT tables. ok kettenis@
2018-08-09Correct the bitmask that returns the function count. We missed a bitpatrick1-2/+2
and thus only supported 4 functions instead of 8. ok kettenis@
2018-07-24Add support fotr the BCM4335/4339 SDIO chip to bwfm(4). This one is a bitkettenis1-8/+16
slow booting up, so give it a bit longer to enable the clock. ok patrick@
2018-07-17TX packets, which can be either Ethernet or control packets, must bepatrick1-93/+108
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@
2018-07-16Add support for the BCM43455 SDIO chip to bwfm(4).patrick1-1/+6
2018-07-16In certain modes SDIO-connected bwfm(4) chips might expect us to readpatrick1-3/+3
another packet (even though nextlen is set to none) to issue more RX interrupts.
2018-06-18Run the code to handle interrupts directly from the interrupt handlerkettenis1-3/+2
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@
2018-06-17Add curly braces to the if-condition to make sure the bus widthpatrick1-3/+3
is only bumped if the high-speed mode is available. ok kettenis@
2018-06-04in non-DIAGNOSTIC kernels, rw_assert_wrlock becomes a nop which leaves thederaadt1-5/+3
local variable dangling, so calculate the lock address by hand at invocation ok kettenis
2018-06-044-bit bus width is mandatory for SDIO cards that support High Speedpatrick3-7/+28
mode, so switch from 1-bit to 4-bit bus width if the host controller supports it. ok kettenis@
2018-06-04Switch to SDIO High Speed mode if the host controller supports it.patrick2-5/+37
ok kettenis@
2018-05-30Implement SDIO DMA support. This is achieved by wrapping thepatrick1-11/+53
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@
2018-05-30For the upcoming SDIO DMA support we need to use DMA-able bufferpatrick1-25/+64
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@
2018-05-30Clear the DMA select bits in case we use PIO instead of DMA. Somepatrick1-2/+3
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@
2018-05-27BCM43430 SDIO works if we load the appropriate firmware.kettenis1-1/+10
ok patrick@
2018-05-26BCM4356 SDIO works if we load the appropriate firmware.kettenis1-1/+5
ok patrick@
2018-05-25So far the SDIO stack issued one transfer for every 64 byte to bepatrick2-40/+66
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@
2018-05-25For SDIO multi-blocks we must not use the AUTO CMD12 feature,patrick1-3/+4
this is only for memory card read/writes. ok kettenis@
2018-05-24Release rwlock on bwfm(4) SDIO initialization error. Fixes hang foundpatrick1-8/+12
by florian@ when firmware isn't present initially.