arch/arm/am67: Add I2C0/WKUP_I2C0 master driver - #20136
Draft
gemstonedevteam wants to merge 5 commits into
Draft
gemstonedevteam wants to merge 5 commits into
gemstonedevteam wants to merge 5 commits into
Conversation
Adds the AM67 GPIO lower half and a polled MCU_MCSPI0 master driver, with the pad configuration both need. The K3 instance is not the OMAP2 layout: an HL header block precedes the functional registers. Chip select is released only after CHSTAT.EOT, since a high SCLK otherwise drops it mid-word and truncates the write, and CHCTRL.EN stays asserted between transfers. t3-gem-o1 registers /dev/spi0 for its ICM-20948 (CS3) and LPS22DF (CS1), and raises NSH_MAXARGUMENTS to 16 so the spi tool can address a device. Verified on t3-gem-o1: WHO_AM_I reads 0xEA on CS3 and 0xB4 on CS1, and the ICM-20948 streams continuous accelerometer samples over the bus. Co-authored-by: Ulaş Sertan Kemeç <sertan.usk@gmail.com> Assisted-by: Cursor Assisted-by: Claude Code:claude-opus-4-8 Signed-off-by: Ulaş Sertan Kemeç <sertan.usk@gmail.com>
Add a Peripheral Support section to the board page listing the GPIO and MCU_MCSPI0 drivers, and replace the "UART console only" warning on both the chip and board pages -- it no longer describes the port. The replacement states what actually constrains the port: NuttX runs on the R5F under RemoteProc and depends on the bootloader or Linux Device Manager having powered and clocked the peripherals, because there is no TISCI client yet. Assisted-by: Claude Code:claude-opus-5 Signed-off-by: Ulaş Sertan Kemeç <sertan.usk@gmail.com>
Adds an I2C master driver for the AM67 I2C instances, completing transfers on ARDY as the K3 controller signals. Bring-up is deferred to the first transfer, because the Linux Device Manager enables the I2C clocks late and touching the bus during early board init is not safe here. The last reference drop clears the flag so the next transfer re-initialises the hardware. t3-gem-o1 registers WKUP_I2C0 as /dev/i2c2. Verified on t3-gem-o1: i2c dev finds 0x30, 0x40, 0x51 and 0x68, the RTC at 0x68 reads a ticking BCD seconds register, repeated reads are consistent, and NACK recovery returns the bus to a usable state. Assisted-by: Claude Code:claude-fable-5 Assisted-by: Claude Code:claude-opus-4-8 Signed-off-by: Ulaş Sertan Kemeç <sertan.usk@gmail.com>
Record the WKUP_I2C0 master in the board's Peripheral Support list. Assisted-by: Claude Code:claude-opus-5 Signed-off-by: Ulaş Sertan Kemeç <sertan.usk@gmail.com>
arch/arm/am67: Add I2C0/WKUP_I2C0 master driver.
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
a transfer completes on
ARDYrather than on the data-ready bits alone,which is what the K3 controller actually signals.
than in
am67_i2cbus_initialize(), because the Linux Device Manager enablesthe I2C clocks late and touching the bus during early board init is not safe
on this part.
am67_i2cbus_uninitialize()clears the initialised flag when the lastreference goes away, so the next transfer brings the hardware up again
rather than talking to a torn-down controller.
/dev/i2c2; MAIN I2C0 is wired but notpopulated on this board.
Impact
Testing
Testing logs before change: no I2C support on this arch.
The version string in the logs is from the tested build; the commits were
GPG-signed afterwards, which rewrites hashes. The code is unchanged.
Testing logs after change:
RTC read, captured 2026-09-11. The scan shows a device ACKing its address
and the reads above show transfers completing; this shows the bus carrying
data that changes.
PR verification Self-Check