Skip to content

Commit e736f02

Browse files
committed
OpenWRT One device tree overlay
1 parent 420bd7e commit e736f02

File tree

3 files changed

+114
-0
lines changed

3 files changed

+114
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Inspired by OnionIOT's `onion-dt-overlay` package
2+
# https://github.com/OnionIoT/OpenWRT-Packages/tree/openwrt-23.05/onion-dt-overlay
3+
4+
include $(TOPDIR)/rules.mk
5+
include $(INCLUDE_DIR)/kernel.mk
6+
7+
PKG_NAME:=openwrt-one-mikrobus-spidev
8+
PKG_URL:=https://github.com/openwrt/openwrt/pull/17399
9+
PKG_VERSION:=1.0
10+
PKG_RELEASE:=1
11+
12+
DTC=$(LINUX_DIR)/scripts/dtc/dtc
13+
14+
include $(INCLUDE_DIR)/package.mk
15+
16+
# @TARGET_mediatek_filogic
17+
define Package/openwrt-one-mikrobus-spidev
18+
TITLE:=openwrt-one-mikrobus-spidev
19+
DEPENDS:=+kmod-spi-dev +kmod-fs-configfs @aarch64
20+
endef
21+
22+
define Package/openwrt-one-mikrobus-spidev/description
23+
DT Overlay for OpenWRT One MikroBus spidev support
24+
endef
25+
26+
define Build/Compile
27+
$(DTC) -b 0 -@ -O dtb ./files/mt7981b-openwrt-one-mikrobus-spidev.dtso -o $(PKG_BUILD_DIR)/mt7981b-openwrt-one-mikrobus-spidev.dtbo
28+
endef
29+
30+
define Package/openwrt-one-mikrobus-spidev/install
31+
$(INSTALL_DIR) $(1)/lib/firmware/device-tree/overlays
32+
$(INSTALL_DATA) $(PKG_BUILD_DIR)/mt7981b-openwrt-one-mikrobus-spidev.dtbo $(1)/lib/firmware/device-tree/overlays/mt7981b-openwrt-one-mikrobus-spidev.dtbo
33+
$(INSTALL_DIR) $(1)/etc/init.d
34+
$(INSTALL_BIN) ./files/dtbo-mikrobus-spidev.init $(1)/etc/init.d/dtbo-mikrobus-spidev
35+
endef
36+
37+
define Package/openwrt-one-mikrobus-spidev/postinst
38+
#!/bin/sh
39+
if [ -z "$$$${IPKG_INSTROOT}" ]; then
40+
/etc/init.d/dtbo-mikrobus-spidev enable
41+
/etc/init.d/dtbo-mikrobus-spidev start
42+
fi
43+
endef
44+
45+
define Package/openwrt-one-mikrobus-spidev/prerm
46+
#!/bin/sh
47+
if [ -z "$$$${IPKG_INSTROOT}" ]; then
48+
/etc/init.d/dtbo-mikrobus-spidev stop
49+
/etc/init.d/dtbo-mikrobus-spidev disable
50+
fi
51+
endef
52+
53+
$(eval $(call BuildPackage,openwrt-one-mikrobus-spidev))
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/sh /etc/rc.common
2+
3+
START=99
4+
STOP=10
5+
6+
OVERLAY_NAME="mt7981b-openwrt-one-mikrobus-spidev"
7+
OVERLAY_PATH="/sys/kernel/config/device-tree/overlays/$OVERLAY_NAME"
8+
DTBO_FILE="/lib/firmware/device-tree/overlays/$OVERLAY_NAME.dtbo"
9+
10+
start() {
11+
# Mount configfs if not already mounted
12+
grep -q /sys/kernel/config /proc/mounts || \
13+
mount -t configfs configfs /sys/kernel/config
14+
15+
[ -d /sys/kernel/config/device-tree/overlays ] || {
16+
log "userspace device tree overlay support not found."
17+
return 1
18+
}
19+
20+
# Create overlay directory and load the dtbo
21+
if [ -f "$DTBO_FILE" ] && [ ! -d "$OVERLAY_PATH" ]; then
22+
mkdir -p "$OVERLAY_PATH"
23+
cat "$DTBO_FILE" > "$OVERLAY_PATH/dtbo"
24+
log "Loaded device tree overlay: $OVERLAY_NAME"
25+
fi
26+
}
27+
28+
stop() {
29+
# Remove the overlay
30+
if [ -d "$OVERLAY_PATH" ]; then
31+
rmdir "$OVERLAY_PATH" 2>/dev/null
32+
log "Unloaded device tree overlay: $OVERLAY_NAME"
33+
fi
34+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2+
/*
3+
* Copyright (C) 2025
4+
* Author: Mark Birss <mark.birss@gmail.com>
5+
*/
6+
7+
/dts-v1/;
8+
/plugin/;
9+
10+
/ {
11+
compatible = "openwrt,one", "mediatek,mt7981";
12+
13+
fragment@0 {
14+
target = <&spi1>;
15+
__overlay__ {
16+
status = "okay";
17+
#address-cells = <1>;
18+
#size-cells = <0>;
19+
20+
spidev@0 {
21+
compatible = "silabs,si3210";
22+
reg = <0>;
23+
spi-max-frequency = <52000000>;
24+
};
25+
};
26+
};
27+
};

0 commit comments

Comments
 (0)