mirror of
https://github.com/openwrt/openwrt.git
synced 2026-06-17 17:01:44 +04:00
firmware: add Realtek RTL826X firmware package
This is required by the realtek PHY driver for: * rtl8261n.bin (package "rtl8261n-firmware" or "rtl8261n-lp-firmware") - RTL8251L 5Gbps PHY - RTL8261BE 10Gbps PHY - RTL8261N 10Gbps PHY * rtl8264b.bin (package "rtl8264b-firmware") - RTL8254B 5Gbps PHY - RTL8264 10Gbps PHY - RTL8264B 10Gbps PHY These PHY chips need a sequence of register writes for initialization. These are provided as firmware files which are interpreted/applied by a new register patch engine. For the moment, the patch instructions in rtl8261-firmware and rtl8264b-firmware are the same as from the rtl8261n driver. This should make it possible to first evaluate the patch engine and driver development for switching over in adjusting the patch instructions. Signed-off-by: Balázs Triszka <info@balika011.hu> [sven: rebase, split, fix package version/release, use conf from rtl8261n driver] Signed-off-by: Sven Eckelmann <sven@narfation.org> [daniel: define VERSION matching source date for the resulting packages] Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
committed by
Daniel Golle
parent
a7b5926bba
commit
a3395c60ba
@@ -0,0 +1,72 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=rtl826x-firmware
|
||||
PKG_SOURCE_DATE:=2026-01-24
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/balika011/realtek_phy_firmware
|
||||
PKG_SOURCE_VERSION:=0cd4abe2b0bf197f75c27088f86a74c7ddb103b4
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_MIRROR_HASH:=f665e9f119cbfddcccae09a17382daa8306772d1e37db7eb69a8771157d06d5f
|
||||
|
||||
PKG_MAINTAINER:=Balázs Triszka <info@balika011.hu>
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Build/Compile
|
||||
(set -e; cd $(PKG_BUILD_DIR); \
|
||||
$(HOSTCC) rtl8261n_rtl8264b.c phy_patch.c -o phy_patch; \
|
||||
./phy_patch \
|
||||
)
|
||||
endef
|
||||
|
||||
define Package/rtl8261n-firmware
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
TITLE:=Realtek RTL8251L/RTL8261BE/RTL8261N firmware
|
||||
VERSION:=20221115
|
||||
endef
|
||||
|
||||
define Package/rtl8261n-lp-firmware
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
TITLE:=Realtek RTL8251L/RTL8261BE/RTL8261N low-power firmware
|
||||
VERSION:=20240729
|
||||
PROVIDES:=rtl8261n-firmware
|
||||
CONFLICTS:=rtl8261n-firmware
|
||||
endef
|
||||
|
||||
define Package/rtl8264b-firmware
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
TITLE:=Realtek RTL8254B/RTL8264/RTL8264B firmware
|
||||
VERSION:=20221215
|
||||
endef
|
||||
|
||||
define Package/rtl8261n-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/rtl8261n.bin \
|
||||
$(1)/lib/firmware/
|
||||
endef
|
||||
|
||||
define Package/rtl8261n-lp-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/rtl8261n_lp.bin \
|
||||
$(1)/lib/firmware/rtl8261n.bin
|
||||
endef
|
||||
|
||||
define Package/rtl8264b-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/rtl8264b.bin \
|
||||
$(1)/lib/firmware/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,rtl8261n-firmware))
|
||||
$(eval $(call BuildPackage,rtl8261n-lp-firmware))
|
||||
$(eval $(call BuildPackage,rtl8264b-firmware))
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
From: Sven Eckelmann <sven@narfation.org>
|
||||
Date: Fri, 27 Mar 2026 00:17:23 +0100
|
||||
Subject: Fix endianness when building on big endian systems
|
||||
|
||||
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
Forwarded: https://github.com/balika011/realtek_phy_firmware/pull/2
|
||||
|
||||
--- a/phy_patch.c
|
||||
+++ b/phy_patch.c
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <linux/errno.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
+#include <endian.h>
|
||||
|
||||
#include "phy_patch.h"
|
||||
|
||||
@@ -12,11 +13,11 @@ int phy_patch_op(rt_phy_patch_db_t *pPhy
|
||||
|
||||
op.patch_op = patch_op;
|
||||
op.portmask = portmask;
|
||||
- op.pagemmd = pagemmd;
|
||||
- op.addr = addr;
|
||||
+ op.pagemmd = htole16(pagemmd);
|
||||
+ op.addr = htole16(addr);
|
||||
op.msb = msb;
|
||||
op.lsb = lsb;
|
||||
- op.data = data;
|
||||
+ op.data = htole16(data);
|
||||
|
||||
return pPhy_patchDb->fPatch_op(phydev, &op);
|
||||
}
|
||||
@@ -41,11 +42,11 @@ static int _phy_patch_process(struct phy
|
||||
{
|
||||
patch.patch_op = pPatch[i].patch_op;
|
||||
patch.portmask = pPatch[i].portmask;
|
||||
- patch.pagemmd = pPatch[i].pagemmd;
|
||||
- patch.addr = pPatch[i].addr;
|
||||
+ patch.pagemmd = htole16(pPatch[i].pagemmd);
|
||||
+ patch.addr = htole16(pPatch[i].addr);
|
||||
patch.msb = pPatch[i].msb;
|
||||
patch.lsb = pPatch[i].lsb;
|
||||
- patch.data = pPatch[i].data;
|
||||
+ patch.data = htole16(pPatch[i].data);
|
||||
|
||||
ret = pPatchDb->fPatch_op(phydev, &patch);
|
||||
if (ret < 0)
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user