firmware
This commit is contained in:
41
i2c_firmware/README.md
Normal file
41
i2c_firmware/README.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# OpenWRT 24.10.4 Firmware with GPIO I²C for GL.iNet XE300
|
||||||
|
|
||||||
|
Custom OpenWRT build enabling **GPIO-based I²C master** on the GL.iNet XE300 (QCA9531) using `i2c-gpio` driver and clean DTS integration.
|
||||||
|
|
||||||
|
## Locate & Edit DTS
|
||||||
|
|
||||||
|
target/linux/ath79/dts/qca9531_glinet_gl-xe300.dts
|
||||||
|
|
||||||
|
git clone https://git.openwrt.org/openwrt/openwrt.git
|
||||||
|
cd openwrt
|
||||||
|
git checkout v24.10.4
|
||||||
|
./scripts/feeds update -a
|
||||||
|
./scripts/feeds install -a
|
||||||
|
|
||||||
|
## Menu Config
|
||||||
|
|
||||||
|
Target System: Atheros ATH79
|
||||||
|
Target Profile: GL.iNet GL-XE300
|
||||||
|
Kernel Modules → I2C Support:
|
||||||
|
kmod-i2c-core
|
||||||
|
kmod-i2c-gpio
|
||||||
|
Utilities → i2c-tools
|
||||||
|
|
||||||
|
make -j$(nproc)
|
||||||
|
|
||||||
|
## Test It
|
||||||
|
|
||||||
|
ls /dev/i2c-*
|
||||||
|
i2cdetect -y 0
|
||||||
|
cat /sys/kernel/debug/gpio
|
||||||
|
i2cdump -y 0 0x48 # Adjust address accordingly
|
||||||
|
|
||||||
|
|
||||||
|
Ubuntu 22.04+ build tools:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt update && sudo apt install -y \
|
||||||
|
build-essential clang flex bison g++ gawk gcc-multilib \
|
||||||
|
g++-multilib gettext libncurses-dev libssl-dev python3 \
|
||||||
|
python3-pip rsync unzip zlib1g-dev file wget git
|
||||||
|
|
||||||
Binary file not shown.
194
i2c_firmware/qca9531_glinet_gl-xe300.dts
Normal file
194
i2c_firmware/qca9531_glinet_gl-xe300.dts
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qca953x.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
#include <dt-bindings/leds/common.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "glinet,gl-xe300", "qca,qca9531";
|
||||||
|
model = "GL.iNet GL-XE300";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
label-mac-device = ð0;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio-export {
|
||||||
|
compatible = "gpio-export";
|
||||||
|
|
||||||
|
gpio_lte_power {
|
||||||
|
gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
|
||||||
|
gpio-export,name = "lte_power";
|
||||||
|
gpio-export,output = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio_sd_detect {
|
||||||
|
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
|
||||||
|
gpio-export,name = "sd_detect";
|
||||||
|
gpio-export,output = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keys {
|
||||||
|
compatible = "gpio-keys";
|
||||||
|
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&jtag_disable_pins>;
|
||||||
|
|
||||||
|
reset {
|
||||||
|
label = "reset";
|
||||||
|
linux,code = <KEY_RESTART>;
|
||||||
|
gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
lan {
|
||||||
|
gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
|
||||||
|
function = LED_FUNCTION_LAN;
|
||||||
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wan {
|
||||||
|
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
|
||||||
|
function = LED_FUNCTION_WAN;
|
||||||
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wlan {
|
||||||
|
gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
|
||||||
|
function = LED_FUNCTION_WLAN;
|
||||||
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
|
linux,default-trigger = "phy0tpt";
|
||||||
|
};
|
||||||
|
|
||||||
|
lte {
|
||||||
|
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
|
||||||
|
label = "green:lte";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c_gpio: i2c@0 {
|
||||||
|
compatible = "i2c-gpio";
|
||||||
|
gpios = <&gpio 15 GPIO_ACTIVE_HIGH
|
||||||
|
&gpio 4 GPIO_ACTIVE_HIGH>;
|
||||||
|
i2c-gpio,delay-us = <5>;
|
||||||
|
i2c-gpio,timeout-ms = <100>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&pcie0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
flash@0 {
|
||||||
|
compatible = "jedec,spi-nor";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <25000000>;
|
||||||
|
|
||||||
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
partition@0 {
|
||||||
|
label = "u-boot";
|
||||||
|
reg = <0x0 0x40000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@40000 {
|
||||||
|
label = "u-boot-env";
|
||||||
|
reg = <0x40000 0x10000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@50000 {
|
||||||
|
label = "art";
|
||||||
|
reg = <0x50000 0x10000>;
|
||||||
|
read-only;
|
||||||
|
|
||||||
|
nvmem-layout {
|
||||||
|
compatible = "fixed-layout";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
macaddr_art_0: macaddr@0 {
|
||||||
|
compatible = "mac-base";
|
||||||
|
reg = <0x0 0x6>;
|
||||||
|
#nvmem-cell-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
cal_art_1000: calibration@1000 {
|
||||||
|
reg = <0x1000 0x440>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@60000 {
|
||||||
|
label = "kernel";
|
||||||
|
reg = <0x60000 0x400000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@460000 {
|
||||||
|
label = "nor_reserved";
|
||||||
|
reg = <0x460000 0xba0000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
flash@1 {
|
||||||
|
compatible = "spi-nand";
|
||||||
|
reg = <1>;
|
||||||
|
spi-max-frequency = <25000000>;
|
||||||
|
|
||||||
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
partition@0 {
|
||||||
|
label = "ubi";
|
||||||
|
reg = <0x0 0x8000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ð0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
phy-handle = <&swphy4>;
|
||||||
|
|
||||||
|
nvmem-cells = <&macaddr_art_0 0>;
|
||||||
|
nvmem-cell-names = "mac-address";
|
||||||
|
};
|
||||||
|
|
||||||
|
ð1 {
|
||||||
|
nvmem-cells = <&macaddr_art_0 1>;
|
||||||
|
nvmem-cell-names = "mac-address";
|
||||||
|
};
|
||||||
|
|
||||||
|
&wmac {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
nvmem-cells = <&cal_art_1000>;
|
||||||
|
nvmem-cell-names = "calibration";
|
||||||
|
};
|
||||||
|
|
||||||
Reference in New Issue
Block a user