452452e453
The I2C transfer chain was stubbed end-to-end: - i2cd's transfer path returned 'not implemented yet' for every transfer, and its wire format didn't match the only in-tree consumer (i2c-hidd sends a bare I2cTransferRequest, i2cd expected I2cControlRequest::Transfer). - intel-lpss-i2cd / dw-acpi-i2cd / amd-mp2-i2cd registered an adapter name and parked forever without initializing the controller or executing a transfer. - intel-lpss-i2cd matched only legacy ACPI HIDs, which do not exist on Meteor Lake / Arrow Lake platforms (LPSS I2C binds by PCI ID there, per Linux drivers/mfd/intel-lpss-pci.c). Replace with real implementations: - New shared crate drivers/i2c/designware (dw-i2c): DesignWare I2C master engine ported from Linux 7.1 i2c-designware-master.c and i2c-designware-common.c — IC_CON + SCL timing computed from ic_clk with Linux's exact hcnt/lcnt formulas (bxt_i2c_info 133 MHz for LPSS, 100 MHz for ACPI-designated blocks), SDA hold with RX-hold workaround, polling transfer engine with RESTART/STOP sequencing, TX_ABRT decode (Nack/arbitration-lost/abort/timeout), 7/10-bit addressing, bounded timeouts. Also provides the shared /scheme/<name> transfer endpoint with register-then-ready ordering. - intel-lpss-i2cd: PCI discovery for ARL-H (0x7750/0x7751, 0x7778-0x777b) and MTL-P (0x7e50/0x7e51, 0x7e78-0x7e7b) with 32/64-bit BAR0 decode, ACPI alias resolution via FixedMemory32 == BAR0 across /scheme/acpi/resources, legacy ACPI-HID path kept, i2cd registration with bounded retry, serves /scheme/i2c-lpss. - dw-acpi-i2cd: converted from register-and-park to the shared engine, serves /scheme/dw-acpi-i2c. - i2cd: real transfer routing — adapter resolution by name/alias (exact, normalized, last-component) and forwarding to the provider daemon's /scheme/<provider>/transfer endpoint. - i2c-interface: I2cAdapterInfo gains provider_scheme + aliases (serde-default, wire-compatible). Tests: dw-i2c 3, intel-lpss-i2cd 3; full workspace cargo check clean; base cooks for x86_64-unknown-redox. Refs: local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md Phase 4
158 lines
4.3 KiB
TOML
158 lines
4.3 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"audiod",
|
|
"config",
|
|
"daemon",
|
|
"dhcpd",
|
|
"dhcpv6d",
|
|
"netdiag",
|
|
"init",
|
|
"initfs",
|
|
"initfs/tools",
|
|
"ipcd",
|
|
"logd",
|
|
"netstack",
|
|
"ptyd",
|
|
"ramfs",
|
|
"redbear-ufw",
|
|
"randd",
|
|
"scheme-utils",
|
|
"zerod",
|
|
|
|
"drivers/common",
|
|
"drivers/executor",
|
|
|
|
"drivers/acpid",
|
|
"drivers/hwd",
|
|
"drivers/pcid",
|
|
"drivers/pcid-spawner",
|
|
"drivers/rtcd",
|
|
"drivers/vboxd",
|
|
"drivers/inputd",
|
|
"drivers/virtio-core",
|
|
|
|
"drivers/audio/ac97d",
|
|
"drivers/audio/ihdad",
|
|
"drivers/audio/sb16d",
|
|
|
|
"drivers/graphics/console-draw",
|
|
"drivers/graphics/fbbootlogd",
|
|
"drivers/graphics/driver-graphics",
|
|
"drivers/graphics/fbcond",
|
|
"drivers/graphics/graphics-ipc",
|
|
"drivers/graphics/ihdgd",
|
|
"drivers/graphics/vesad",
|
|
"drivers/graphics/virtio-gpud",
|
|
|
|
"drivers/input/ps2d",
|
|
"drivers/input/usbhidd",
|
|
"drivers/thermald",
|
|
|
|
"drivers/net/driver-network",
|
|
"drivers/net/e1000d",
|
|
"drivers/net/ixgbed",
|
|
"drivers/net/rtl8139d",
|
|
"drivers/net/rtl8168d",
|
|
"drivers/net/virtio-netd",
|
|
|
|
"drivers/redoxerd",
|
|
|
|
"drivers/storage/ahcid",
|
|
"drivers/storage/bcm2835-sdhcid",
|
|
"drivers/storage/driver-block",
|
|
"drivers/storage/ided",
|
|
"drivers/storage/lived", # TODO: not really a driver...
|
|
"drivers/storage/nvmed",
|
|
"drivers/storage/usbscsid",
|
|
"drivers/storage/virtio-blkd",
|
|
|
|
"drivers/usb/xhcid",
|
|
"drivers/usb/usbctl",
|
|
"drivers/usb/usbhubd",
|
|
"drivers/usb/ucsid",
|
|
|
|
"drivers/i2c/i2c-interface",
|
|
"drivers/i2c/i2cd",
|
|
"drivers/i2c/amd-mp2-i2cd",
|
|
"drivers/i2c/designware",
|
|
"drivers/i2c/dw-acpi-i2cd",
|
|
"drivers/i2c/intel-lpss-i2cd",
|
|
|
|
"drivers/gpio/gpiod",
|
|
"drivers/gpio/intel-gpiod",
|
|
"drivers/gpio/i2c-gpio-expanderd",
|
|
|
|
"drivers/input/i2c-hidd",
|
|
"drivers/input/intel-thc-hidd",
|
|
|
|
"drivers/acpi-resource",
|
|
]
|
|
|
|
# Bootstrap needs it's own profile configuration
|
|
exclude = ["bootstrap"]
|
|
|
|
# Low-level Redox OS crates should be kept in sync using workspace dependencies
|
|
# Remember to also update bootstrap dependencies, those are not in the workspace
|
|
[workspace.dependencies]
|
|
acpi = { git = "https://gitlab.redox-os.org/redox-os/acpi.git", branch = "redox-6.x" }
|
|
anyhow = "1"
|
|
bitflags = "2"
|
|
clap = "4"
|
|
drm = "0.15.0"
|
|
drm-sys = "0.8.1"
|
|
edid = "0.3.0" #TODO: edid is abandoned, fork it and maintain?
|
|
fdt = "0.1.5"
|
|
libc = "0.2.181"
|
|
log = "0.4"
|
|
libredox = { path = "../libredox", default-features = true }
|
|
orbclient = "0.3.51"
|
|
parking_lot = { git = "https://github.com/Amanieu/parking_lot.git", rev = "0.12.3", default-features = false }
|
|
pico-args = "0.5"
|
|
plain = "0.2.3"
|
|
ransid = "0.4"
|
|
redox_event = "0.4.8"
|
|
redox-ioctl = { path = "../relibc/redox-ioctl" }
|
|
redox-log = { git = "https://gitlab.redox-os.org/redox-os/redox-log.git" }
|
|
redox-rt = { path = "../relibc/redox-rt", default-features = false }
|
|
redox-scheme = { path = "../redox-scheme" }
|
|
redox_syscall = { path = "../syscall", features = ["std"] }
|
|
redox_termios = "0.1.3"
|
|
ron = "0.8.1"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
slab = "0.4.9"
|
|
smallvec = "1"
|
|
spin = "0.10"
|
|
static_assertions = "1.1.0"
|
|
thiserror = "2"
|
|
toml = "1"
|
|
|
|
[workspace.lints.rust]
|
|
missing_docs = "allow" #TODO: set to deny when all public functions are documented
|
|
|
|
[workspace.lints.clippy]
|
|
missing_safety_doc = "warn" #TODO: set to deny when all safety documentation is completed
|
|
precedence = "deny"
|
|
|
|
[patch.crates-io]
|
|
# Red Bear OS Phase I: s2idle / Modern Standby support.
|
|
# The [patch.crates-io] replaces the upstream gitlab.redox-os.org
|
|
# redox_syscall (which lacks the new AcpiVerb::EnterS2Idle /
|
|
# ExitS2Idle variants) with the local fork at
|
|
# local/sources/syscall/ (a sibling directory of base/, both
|
|
# under local/sources/). The local fork is the upstream
|
|
# gitlab.redox-os.org/redox-os/syscall @ 79cb6d9 with our
|
|
# Red Bear OS P1 commit (cfa7f0c) on top. The version field
|
|
# stays at upstream 0.8.1 — periodic rebase via
|
|
# 'git fetch upstream && git rebase upstream/master' is the
|
|
# workflow when upstream changes. Hardware-agnostic — works
|
|
# for any platform with Modern Standby firmware (Dell, HP,
|
|
# Lenovo, LG Gram, etc.).
|
|
redox_syscall = { path = "../syscall" }
|
|
libredox = { path = "../libredox" }
|
|
redox-scheme = { path = "../redox-scheme" }
|
|
|
|
[patch."https://gitlab.redox-os.org/redox-os/relibc.git"]
|
|
redox-ioctl = { path = "../relibc/redox-ioctl" }
|