Merge Official Source
This commit is contained in:
commit
e50fab1aca
@ -113,7 +113,7 @@ ifneq ($(filter patch-libtool,$(PKG_FIXUP)),)
|
||||
endif
|
||||
|
||||
ifneq ($(filter libtool,$(PKG_FIXUP)),)
|
||||
PKG_BUILD_DEPENDS += libtool libiconv
|
||||
PKG_BUILD_DEPENDS += libtool
|
||||
ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),)
|
||||
Hooks/Configure/Pre += autoreconf_target
|
||||
endif
|
||||
@ -124,7 +124,7 @@ ifneq ($(filter libtool-abiver,$(PKG_FIXUP)),)
|
||||
endif
|
||||
|
||||
ifneq ($(filter libtool-ucxx,$(PKG_FIXUP)),)
|
||||
PKG_BUILD_DEPENDS += libtool libiconv
|
||||
PKG_BUILD_DEPENDS += libtool
|
||||
ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),)
|
||||
Hooks/Configure/Pre += autoreconf_target
|
||||
endif
|
||||
|
||||
@ -10,27 +10,37 @@ ifeq ($(CONFIG_BUILD_NLS),y)
|
||||
INTL_PREFIX:=$(STAGING_DIR)/usr/lib/libintl-full
|
||||
INTL_FULL:=1
|
||||
|
||||
# iconv stub
|
||||
else
|
||||
ICONV_PREFIX:=$(STAGING_DIR)/usr/lib/libiconv-stub
|
||||
ICONV_PREFIX:=
|
||||
ICONV_FULL:=
|
||||
|
||||
INTL_PREFIX:=$(STAGING_DIR)/usr/lib/libintl-stub
|
||||
INTL_PREFIX:=
|
||||
INTL_FULL:=
|
||||
endif
|
||||
|
||||
PKG_CONFIG_DEPENDS += CONFIG_BUILD_NLS
|
||||
PKG_BUILD_DEPENDS += !BUILD_NLS:libiconv
|
||||
|
||||
ICONV_DEPENDS:=+BUILD_NLS:libiconv-full
|
||||
ICONV_CFLAGS:=-I$(ICONV_PREFIX)/include
|
||||
ICONV_CPPFLAGS:=-I$(ICONV_PREFIX)/include
|
||||
ICONV_LDFLAGS:=-L$(ICONV_PREFIX)/lib -Wl,-rpath-link=$(ICONV_PREFIX)/lib
|
||||
ifeq ($(CONFIG_BUILD_NLS),y)
|
||||
ICONV_CFLAGS:=-I$(ICONV_PREFIX)/include
|
||||
ICONV_CPPFLAGS:=-I$(ICONV_PREFIX)/include
|
||||
ICONV_LDFLAGS:=-L$(ICONV_PREFIX)/lib -Wl,-rpath-link=$(ICONV_PREFIX)/lib
|
||||
else
|
||||
ICONV_CFLAGS:=
|
||||
ICONV_CPPFLAGS:=
|
||||
ICONV_LDFLAGS:=
|
||||
endif
|
||||
|
||||
INTL_DEPENDS:=+BUILD_NLS:libintl-full
|
||||
INTL_CFLAGS:=-I$(INTL_PREFIX)/include
|
||||
INTL_CPPFLAGS:=-I$(INTL_PREFIX)/include
|
||||
INTL_LDFLAGS:=-L$(INTL_PREFIX)/lib -Wl,-rpath-link=$(INTL_PREFIX)/lib
|
||||
ifeq ($(CONFIG_BUILD_NLS),y)
|
||||
INTL_CFLAGS:=-I$(INTL_PREFIX)/include
|
||||
INTL_CPPFLAGS:=-I$(INTL_PREFIX)/include
|
||||
INTL_LDFLAGS:=-L$(INTL_PREFIX)/lib -Wl,-rpath-link=$(INTL_PREFIX)/lib
|
||||
else
|
||||
INTL_CFLAGS:=
|
||||
INTL_CPPFLAGS:=
|
||||
INTL_LDFLAGS:=
|
||||
endif
|
||||
|
||||
TARGET_CFLAGS += $(ICONV_CFLAGS) $(INTL_CFLAGS)
|
||||
TARGET_CPPFLAGS += $(ICONV_CPPFLAGS) $(INTL_CPPFLAGS)
|
||||
|
||||
@ -175,7 +175,8 @@ define Build/Compile
|
||||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
||||
CROSS_COMPILE=$(TARGET_CROSS) \
|
||||
KCFLAGS="$(filter-out -fstack-protector \
|
||||
-mfloat-abi=hard, $(TARGET_CFLAGS)) -mfloat-abi=soft"
|
||||
-mfloat-abi=hard, $(TARGET_CFLAGS)) -mfloat-abi=soft" \
|
||||
$(UBOOT_MAKE_FLAGS)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage/U-Boot))
|
||||
|
||||
@ -39,7 +39,7 @@ endef
|
||||
define U-Boot/pico-pi-imx7d
|
||||
NAME:=TechNexion PICO-PI-IMX7D
|
||||
UBOOT_IMAGE:=SPL u-boot-dtb.img
|
||||
UBOOT_MAKE_FLAGS:=SPL u-boot-dtb.img
|
||||
UBOOT_MAKE_FLAGS+=SPL u-boot-dtb.img
|
||||
BUILD_SUBTARGET:=cortexa7
|
||||
BUILD_DEVICES:=technexion_imx7d-pico-pi
|
||||
endef
|
||||
|
||||
@ -1,19 +1,67 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_VERSION:=2022.01
|
||||
PKG_HASH:=81b4543227db228c03f8a1bf5ddbc813b0bb8f6555ce46064ef721a6fc680413
|
||||
PKG_VERSION:=2022.07
|
||||
PKG_HASH:=92b08eb49c24da14c1adbf70a71ae8f37cc53eeb4230e859ad8b6733d13dcf5e
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-tools/host
|
||||
|
||||
include $(INCLUDE_DIR)/u-boot.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
|
||||
MT7621_LOWLEVEL_PRELOADER_URL:=https://raw.githubusercontent.com/mtk-openwrt/mt7621-lowlevel-preloader/master/
|
||||
|
||||
define Download/mt7621-stage-sram
|
||||
FILE:=mt7621_stage_sram.bin
|
||||
URL:=$(MT7621_LOWLEVEL_PRELOADER_URL)
|
||||
HASH:=1dda68aa089f0ff262e01539b990dea478952e9fb68bcc0a8cd6f76f0135c62e
|
||||
endef
|
||||
|
||||
ifdef CONFIG_TARGET_ramips_mt7621
|
||||
$(eval $(call Download,mt7621-stage-sram))
|
||||
endif
|
||||
|
||||
define U-Boot/Default
|
||||
BUILD_TARGET:=mediatek
|
||||
UBOOT_IMAGE:=u-boot-mtk.bin
|
||||
endef
|
||||
|
||||
define U-Boot/mt7620_rfb
|
||||
NAME:=MT7620 Reference Board
|
||||
UBOOT_CONFIG:=mt7620_rfb
|
||||
BUILD_DEVICES:=ralink_mt7620a-evb
|
||||
BUILD_TARGET:=ramips
|
||||
BUILD_SUBTARGET:=mt7620
|
||||
UBOOT_IMAGE:=u-boot-with-spl.bin
|
||||
endef
|
||||
|
||||
define U-Boot/mt7620_mt7530_rfb
|
||||
NAME:=MT7620+MT7530 Reference Board
|
||||
UBOOT_CONFIG:=mt7620_mt7530_rfb
|
||||
BUILD_DEVICES:=ralink_mt7620a-mt7530-evb
|
||||
BUILD_TARGET:=ramips
|
||||
BUILD_SUBTARGET:=mt7620
|
||||
UBOOT_IMAGE:=u-boot-with-spl.bin
|
||||
endef
|
||||
|
||||
define U-Boot/mt7621_rfb
|
||||
NAME:=MT7621 Reference Board
|
||||
UBOOT_CONFIG:=mt7621_rfb
|
||||
BUILD_DEVICES:=mediatek_mt7621-eval-board
|
||||
BUILD_TARGET:=ramips
|
||||
BUILD_SUBTARGET:=mt7621
|
||||
UBOOT_IMAGE:=u-boot-mt7621.bin
|
||||
endef
|
||||
|
||||
define U-Boot/mt7621_nand_rfb
|
||||
NAME:=MT7621 Reference Board (NAND)
|
||||
UBOOT_CONFIG:=mt7621_nand_rfb
|
||||
BUILD_DEVICES:=mediatek_mt7621-eval-board
|
||||
BUILD_TARGET:=ramips
|
||||
BUILD_SUBTARGET:=mt7621
|
||||
UBOOT_IMAGE:=u-boot-mt7621.bin
|
||||
endef
|
||||
|
||||
define U-Boot/mt7622_rfb1
|
||||
NAME:=MT7622 Reference Board 1
|
||||
UBOOT_CONFIG:=mt7622_rfb
|
||||
@ -91,6 +139,24 @@ define U-Boot/mt7623n_bpir2
|
||||
UBOOT_CONFIG:=mt7623n_bpir2
|
||||
endef
|
||||
|
||||
define U-Boot/mt7628_rfb
|
||||
NAME:=MT7628 Reference Board
|
||||
BUILD_DEVICES:=mediatek_mt7628an-eval-board
|
||||
BUILD_TARGET:=ramips
|
||||
BUILD_SUBTARGET:=mt76x8
|
||||
UBOOT_CONFIG:=mt7628_rfb
|
||||
UBOOT_IMAGE:=u-boot-with-spl.bin
|
||||
endef
|
||||
|
||||
define U-Boot/ravpower_rp-wd009
|
||||
NAME:=RAVPower RP-WD009
|
||||
BUILD_TARGET:=ramips
|
||||
BUILD_DEVICES:=ravpower_rp-wd009
|
||||
BUILD_SUBTARGET:=mt76x8
|
||||
UBOOT_CONFIG:=ravpower-rp-wd009-ram
|
||||
UBOOT_IMAGE:=u-boot.bin
|
||||
endef
|
||||
|
||||
define U-Boot/mt7629_rfb
|
||||
NAME:=MT7629 Reference Board
|
||||
BUILD_SUBTARGET:=mt7629
|
||||
@ -99,6 +165,10 @@ define U-Boot/mt7629_rfb
|
||||
endef
|
||||
|
||||
UBOOT_TARGETS := \
|
||||
mt7620_mt7530_rfb \
|
||||
mt7620_rfb \
|
||||
mt7621_nand_rfb \
|
||||
mt7621_rfb \
|
||||
mt7622_bananapi_bpi-r64-emmc \
|
||||
mt7622_bananapi_bpi-r64-sdmmc \
|
||||
mt7622_bananapi_bpi-r64-snand \
|
||||
@ -107,9 +177,13 @@ UBOOT_TARGETS := \
|
||||
mt7622_ubnt_unifi-6-lr \
|
||||
mt7623n_bpir2 \
|
||||
mt7623a_unielec_u7623 \
|
||||
mt7628_rfb \
|
||||
ravpower_rp-wd009 \
|
||||
mt7629_rfb
|
||||
|
||||
ifdef CONFIG_TARGET_mediatek
|
||||
UBOOT_MAKE_FLAGS += $(UBOOT_IMAGE:.fip=.bin)
|
||||
endif
|
||||
|
||||
define Build/fip-image
|
||||
$(STAGING_DIR_HOST)/bin/fiptool create \
|
||||
@ -118,6 +192,13 @@ define Build/fip-image
|
||||
$(PKG_BUILD_DIR)/u-boot.fip
|
||||
endef
|
||||
|
||||
ifdef CONFIG_TARGET_ramips_mt7621
|
||||
define Build/Prepare
|
||||
$(call Build/Prepare/Default)
|
||||
$(CP) $(DL_DIR)/mt7621_stage_sram.bin $(PKG_BUILD_DIR)/
|
||||
endef
|
||||
endif
|
||||
|
||||
define Build/Configure
|
||||
$(call Build/Configure/U-Boot)
|
||||
sed -i 's/CONFIG_TOOLS_LIBCRYPTO=y/# CONFIG_TOOLS_LIBCRYPTO is not set/' $(PKG_BUILD_DIR)/.config
|
||||
@ -131,8 +212,10 @@ endif
|
||||
endef
|
||||
|
||||
# don't stage files to bindir, let target/linux/mediatek/image/*.mk do that
|
||||
ifdef CONFIG_TARGET_mediatek
|
||||
define Package/u-boot/install
|
||||
endef
|
||||
endif
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
||||
|
||||
@ -46,7 +46,7 @@ This reverts commit 5c5992cb90cf9ca4d51e38d9a95a13c293904df5.
|
||||
}
|
||||
|
||||
|
||||
@@ -501,7 +500,6 @@ int clk_free(struct clk *clk)
|
||||
@@ -469,7 +468,6 @@ void clk_free(struct clk *clk)
|
||||
ulong clk_get_rate(struct clk *clk)
|
||||
{
|
||||
const struct clk_ops *ops;
|
||||
@ -54,7 +54,7 @@ This reverts commit 5c5992cb90cf9ca4d51e38d9a95a13c293904df5.
|
||||
|
||||
debug("%s(clk=%p)\n", __func__, clk);
|
||||
if (!clk_valid(clk))
|
||||
@@ -511,11 +509,7 @@ ulong clk_get_rate(struct clk *clk)
|
||||
@@ -479,11 +477,7 @@ ulong clk_get_rate(struct clk *clk)
|
||||
if (!ops->get_rate)
|
||||
return -ENOSYS;
|
||||
|
||||
|
||||
@ -38,9 +38,9 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/drivers/mtd/Kconfig
|
||||
+++ b/drivers/mtd/Kconfig
|
||||
@@ -116,6 +116,8 @@ config STM32_FLASH
|
||||
This is the driver of embedded flash for some STMicroelectronics
|
||||
STM32 MCU.
|
||||
@@ -158,6 +158,8 @@ config SYS_MAX_FLASH_BANKS_DETECT
|
||||
to reduce the effective number of flash bank, between 0 and
|
||||
CONFIG_SYS_MAX_FLASH_BANKS
|
||||
|
||||
+source "drivers/mtd/mtk-snand/Kconfig"
|
||||
+
|
||||
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/env/Kconfig
|
||||
+++ b/env/Kconfig
|
||||
@@ -19,7 +19,7 @@ config ENV_IS_NOWHERE
|
||||
@@ -37,7 +37,7 @@ config ENV_IS_NOWHERE
|
||||
!ENV_IS_IN_MMC && !ENV_IS_IN_NAND && \
|
||||
!ENV_IS_IN_NVRAM && !ENV_IS_IN_ONENAND && \
|
||||
!ENV_IS_IN_REMOTE && !ENV_IS_IN_SPI_FLASH && \
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
help
|
||||
Define this if you don't want to or can't have an environment stored
|
||||
on a storage medium. In this case the environment will still exist
|
||||
@@ -208,6 +208,27 @@ config ENV_IS_IN_MMC
|
||||
@@ -226,6 +226,27 @@ config ENV_IS_IN_MMC
|
||||
This value is also in units of bytes, but must also be aligned to
|
||||
an MMC sector boundary.
|
||||
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
config ENV_IS_IN_NAND
|
||||
bool "Environment in a NAND device"
|
||||
depends on !CHAIN_OF_TRUST
|
||||
@@ -535,10 +556,16 @@ config ENV_ADDR_REDUND
|
||||
@@ -531,10 +552,16 @@ config ENV_ADDR_REDUND
|
||||
Offset from the start of the device (or partition) of the redundant
|
||||
environment location.
|
||||
|
||||
@ -92,8 +92,8 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ ENV_IS_IN_SPI_FLASH || ENV_IS_IN_MTD
|
||||
default 0x3f8000 if ARCH_ROCKCHIP && ENV_IS_IN_MMC
|
||||
default 0x140000 if ARCH_ROCKCHIP && ENV_IS_IN_SPI_FLASH
|
||||
default 0x88000 if ARCH_SUNXI
|
||||
@@ -583,6 +610,12 @@ config ENV_SECT_SIZE
|
||||
default 0xF0000 if ARCH_SUNXI
|
||||
@@ -581,6 +608,12 @@ config ENV_SECT_SIZE
|
||||
help
|
||||
Size of the sector containing the environment.
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+CONFIG_ENV_OFFSET=0x280000
|
||||
CONFIG_DEBUG_UART_BASE=0x11002000
|
||||
CONFIG_DEBUG_UART_CLOCK=25000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
CONFIG_SYS_LOAD_ADDR=0x4007ff28
|
||||
@@ -22,6 +24,9 @@ CONFIG_CMD_SF_TEST=y
|
||||
CONFIG_CMD_PING=y
|
||||
CONFIG_CMD_SMC=y
|
||||
|
||||
@ -0,0 +1,163 @@
|
||||
From 65a4a80157bacde3cf86ce8cbc9a08f5f05ad9bb Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:21:34 +0800
|
||||
Subject: [PATCH 01/25] mips: add asm/mipsmtregs.h for MIPS multi-threading
|
||||
|
||||
To be compatible with old u-boot used by lots of MT7621 devices, the u-boot
|
||||
needs to boot-up MT7621's all cores, and all VPES of each core.
|
||||
|
||||
This patch adds asm/mipsmtregs.h from linux kernel which is need for
|
||||
boot-up VPEs.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/include/asm/mipsmtregs.h | 142 +++++++++++++++++++++++++++++
|
||||
1 file changed, 142 insertions(+)
|
||||
create mode 100644 arch/mips/include/asm/mipsmtregs.h
|
||||
|
||||
--- /dev/null
|
||||
+++ b/arch/mips/include/asm/mipsmtregs.h
|
||||
@@ -0,0 +1,142 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * MT regs definitions, follows on from mipsregs.h
|
||||
+ * Copyright (C) 2004 - 2005 MIPS Technologies, Inc. All rights reserved.
|
||||
+ * Elizabeth Clarke et. al.
|
||||
+ *
|
||||
+ */
|
||||
+#ifndef _ASM_MIPSMTREGS_H
|
||||
+#define _ASM_MIPSMTREGS_H
|
||||
+
|
||||
+#include <asm/mipsregs.h>
|
||||
+
|
||||
+/*
|
||||
+ * Macros for use in assembly language code
|
||||
+ */
|
||||
+
|
||||
+#define CP0_MVPCONTROL $0, 1
|
||||
+#define CP0_MVPCONF0 $0, 2
|
||||
+#define CP0_MVPCONF1 $0, 3
|
||||
+#define CP0_VPECONTROL $1, 1
|
||||
+#define CP0_VPECONF0 $1, 2
|
||||
+#define CP0_VPECONF1 $1, 3
|
||||
+#define CP0_YQMASK $1, 4
|
||||
+#define CP0_VPESCHEDULE $1, 5
|
||||
+#define CP0_VPESCHEFBK $1, 6
|
||||
+#define CP0_TCSTATUS $2, 1
|
||||
+#define CP0_TCBIND $2, 2
|
||||
+#define CP0_TCRESTART $2, 3
|
||||
+#define CP0_TCHALT $2, 4
|
||||
+#define CP0_TCCONTEXT $2, 5
|
||||
+#define CP0_TCSCHEDULE $2, 6
|
||||
+#define CP0_TCSCHEFBK $2, 7
|
||||
+#define CP0_SRSCONF0 $6, 1
|
||||
+#define CP0_SRSCONF1 $6, 2
|
||||
+#define CP0_SRSCONF2 $6, 3
|
||||
+#define CP0_SRSCONF3 $6, 4
|
||||
+#define CP0_SRSCONF4 $6, 5
|
||||
+
|
||||
+/* MVPControl fields */
|
||||
+#define MVPCONTROL_EVP (_ULCAST_(1))
|
||||
+
|
||||
+#define MVPCONTROL_VPC_SHIFT 1
|
||||
+#define MVPCONTROL_VPC (_ULCAST_(1) << MVPCONTROL_VPC_SHIFT)
|
||||
+
|
||||
+#define MVPCONTROL_STLB_SHIFT 2
|
||||
+#define MVPCONTROL_STLB (_ULCAST_(1) << MVPCONTROL_STLB_SHIFT)
|
||||
+
|
||||
+/* MVPConf0 fields */
|
||||
+#define MVPCONF0_PTC_SHIFT 0
|
||||
+#define MVPCONF0_PTC (_ULCAST_(0xff))
|
||||
+#define MVPCONF0_PVPE_SHIFT 10
|
||||
+#define MVPCONF0_PVPE (_ULCAST_(0xf) << MVPCONF0_PVPE_SHIFT)
|
||||
+#define MVPCONF0_TCA_SHIFT 15
|
||||
+#define MVPCONF0_TCA (_ULCAST_(1) << MVPCONF0_TCA_SHIFT)
|
||||
+#define MVPCONF0_PTLBE_SHIFT 16
|
||||
+#define MVPCONF0_PTLBE (_ULCAST_(0x3ff) << MVPCONF0_PTLBE_SHIFT)
|
||||
+#define MVPCONF0_TLBS_SHIFT 29
|
||||
+#define MVPCONF0_TLBS (_ULCAST_(1) << MVPCONF0_TLBS_SHIFT)
|
||||
+#define MVPCONF0_M_SHIFT 31
|
||||
+#define MVPCONF0_M (_ULCAST_(0x1) << MVPCONF0_M_SHIFT)
|
||||
+
|
||||
+/* config3 fields */
|
||||
+#define CONFIG3_MT_SHIFT 2
|
||||
+#define CONFIG3_MT (_ULCAST_(1) << CONFIG3_MT_SHIFT)
|
||||
+
|
||||
+/* VPEControl fields (per VPE) */
|
||||
+#define VPECONTROL_TARGTC (_ULCAST_(0xff))
|
||||
+
|
||||
+#define VPECONTROL_TE_SHIFT 15
|
||||
+#define VPECONTROL_TE (_ULCAST_(1) << VPECONTROL_TE_SHIFT)
|
||||
+#define VPECONTROL_EXCPT_SHIFT 16
|
||||
+#define VPECONTROL_EXCPT (_ULCAST_(0x7) << VPECONTROL_EXCPT_SHIFT)
|
||||
+
|
||||
+/* Thread Exception Codes for EXCPT field */
|
||||
+#define THREX_TU 0
|
||||
+#define THREX_TO 1
|
||||
+#define THREX_IYQ 2
|
||||
+#define THREX_GSX 3
|
||||
+#define THREX_YSCH 4
|
||||
+#define THREX_GSSCH 5
|
||||
+
|
||||
+#define VPECONTROL_GSI_SHIFT 20
|
||||
+#define VPECONTROL_GSI (_ULCAST_(1) << VPECONTROL_GSI_SHIFT)
|
||||
+#define VPECONTROL_YSI_SHIFT 21
|
||||
+#define VPECONTROL_YSI (_ULCAST_(1) << VPECONTROL_YSI_SHIFT)
|
||||
+
|
||||
+/* VPEConf0 fields (per VPE) */
|
||||
+#define VPECONF0_VPA_SHIFT 0
|
||||
+#define VPECONF0_VPA (_ULCAST_(1) << VPECONF0_VPA_SHIFT)
|
||||
+#define VPECONF0_MVP_SHIFT 1
|
||||
+#define VPECONF0_MVP (_ULCAST_(1) << VPECONF0_MVP_SHIFT)
|
||||
+#define VPECONF0_XTC_SHIFT 21
|
||||
+#define VPECONF0_XTC (_ULCAST_(0xff) << VPECONF0_XTC_SHIFT)
|
||||
+
|
||||
+/* VPEConf1 fields (per VPE) */
|
||||
+#define VPECONF1_NCP1_SHIFT 0
|
||||
+#define VPECONF1_NCP1 (_ULCAST_(0xff) << VPECONF1_NCP1_SHIFT)
|
||||
+#define VPECONF1_NCP2_SHIFT 10
|
||||
+#define VPECONF1_NCP2 (_ULCAST_(0xff) << VPECONF1_NCP2_SHIFT)
|
||||
+#define VPECONF1_NCX_SHIFT 20
|
||||
+#define VPECONF1_NCX (_ULCAST_(0xff) << VPECONF1_NCX_SHIFT)
|
||||
+
|
||||
+/* TCStatus fields (per TC) */
|
||||
+#define TCSTATUS_TASID (_ULCAST_(0xff))
|
||||
+#define TCSTATUS_IXMT_SHIFT 10
|
||||
+#define TCSTATUS_IXMT (_ULCAST_(1) << TCSTATUS_IXMT_SHIFT)
|
||||
+#define TCSTATUS_TKSU_SHIFT 11
|
||||
+#define TCSTATUS_TKSU (_ULCAST_(3) << TCSTATUS_TKSU_SHIFT)
|
||||
+#define TCSTATUS_A_SHIFT 13
|
||||
+#define TCSTATUS_A (_ULCAST_(1) << TCSTATUS_A_SHIFT)
|
||||
+#define TCSTATUS_DA_SHIFT 15
|
||||
+#define TCSTATUS_DA (_ULCAST_(1) << TCSTATUS_DA_SHIFT)
|
||||
+#define TCSTATUS_DT_SHIFT 20
|
||||
+#define TCSTATUS_DT (_ULCAST_(1) << TCSTATUS_DT_SHIFT)
|
||||
+#define TCSTATUS_TDS_SHIFT 21
|
||||
+#define TCSTATUS_TDS (_ULCAST_(1) << TCSTATUS_TDS_SHIFT)
|
||||
+#define TCSTATUS_TSST_SHIFT 22
|
||||
+#define TCSTATUS_TSST (_ULCAST_(1) << TCSTATUS_TSST_SHIFT)
|
||||
+#define TCSTATUS_RNST_SHIFT 23
|
||||
+#define TCSTATUS_RNST (_ULCAST_(3) << TCSTATUS_RNST_SHIFT)
|
||||
+/* Codes for RNST */
|
||||
+#define TC_RUNNING 0
|
||||
+#define TC_WAITING 1
|
||||
+#define TC_YIELDING 2
|
||||
+#define TC_GATED 3
|
||||
+
|
||||
+#define TCSTATUS_TMX_SHIFT 27
|
||||
+#define TCSTATUS_TMX (_ULCAST_(1) << TCSTATUS_TMX_SHIFT)
|
||||
+/* TCStatus TCU bits can use same definitions/offsets as CU bits in Status */
|
||||
+
|
||||
+/* TCBind */
|
||||
+#define TCBIND_CURVPE_SHIFT 0
|
||||
+#define TCBIND_CURVPE (_ULCAST_(0xf))
|
||||
+
|
||||
+#define TCBIND_CURTC_SHIFT 21
|
||||
+
|
||||
+#define TCBIND_CURTC (_ULCAST_(0xff) << TCBIND_CURTC_SHIFT)
|
||||
+
|
||||
+/* TCHalt */
|
||||
+#define TCHALT_H (_ULCAST_(1))
|
||||
+
|
||||
+#endif
|
||||
@ -0,0 +1,111 @@
|
||||
From be570e7b0ce004127a7cc97bfae30037fc42a340 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:21:39 +0800
|
||||
Subject: [PATCH 02/25] mips: add more definitions for asm/cm.h
|
||||
|
||||
This patch add more definitions needed for MT7621 initialization.
|
||||
MT7621 needs to initialize GIC/CPC and other related parts.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/include/asm/cm.h | 67 ++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 67 insertions(+)
|
||||
|
||||
--- a/arch/mips/include/asm/cm.h
|
||||
+++ b/arch/mips/include/asm/cm.h
|
||||
@@ -8,9 +8,23 @@
|
||||
#define __MIPS_ASM_CM_H__
|
||||
|
||||
/* Global Control Register (GCR) offsets */
|
||||
+#define GCR_CONFIG 0x0000
|
||||
#define GCR_BASE 0x0008
|
||||
#define GCR_BASE_UPPER 0x000c
|
||||
+#define GCR_CONTROL 0x0010
|
||||
+#define GCR_ACCESS 0x0020
|
||||
#define GCR_REV 0x0030
|
||||
+#define GCR_GIC_BASE 0x0080
|
||||
+#define GCR_CPC_BASE 0x0088
|
||||
+#define GCR_REG0_BASE 0x0090
|
||||
+#define GCR_REG0_MASK 0x0098
|
||||
+#define GCR_REG1_BASE 0x00a0
|
||||
+#define GCR_REG1_MASK 0x00a8
|
||||
+#define GCR_REG2_BASE 0x00b0
|
||||
+#define GCR_REG2_MASK 0x00b8
|
||||
+#define GCR_REG3_BASE 0x00c0
|
||||
+#define GCR_REG3_MASK 0x00c8
|
||||
+#define GCR_CPC_STATUS 0x00f0
|
||||
#define GCR_L2_CONFIG 0x0130
|
||||
#define GCR_L2_TAG_ADDR 0x0600
|
||||
#define GCR_L2_TAG_ADDR_UPPER 0x0604
|
||||
@@ -19,10 +33,59 @@
|
||||
#define GCR_L2_DATA 0x0610
|
||||
#define GCR_L2_DATA_UPPER 0x0614
|
||||
#define GCR_Cx_COHERENCE 0x2008
|
||||
+#define GCR_Cx_OTHER 0x2018
|
||||
+#define GCR_Cx_ID 0x2028
|
||||
+#define GCR_CO_COHERENCE 0x4008
|
||||
+
|
||||
+/* GCR_CONFIG fields */
|
||||
+#define GCR_CONFIG_NUM_CLUSTERS_SHIFT 23
|
||||
+#define GCR_CONFIG_NUM_CLUSTERS (0x7f << 23)
|
||||
+#define GCR_CONFIG_NUMIOCU_SHIFT 8
|
||||
+#define GCR_CONFIG_NUMIOCU (0xff << 8)
|
||||
+#define GCR_CONFIG_PCORES_SHIFT 0
|
||||
+#define GCR_CONFIG_PCORES (0xff << 0)
|
||||
+
|
||||
+/* GCR_BASE fields */
|
||||
+#define GCR_BASE_SHIFT 15
|
||||
+#define CCA_DEFAULT_OVR_SHIFT 5
|
||||
+#define CCA_DEFAULT_OVR_MASK (0x7 << 5)
|
||||
+#define CCA_DEFAULT_OVREN (0x1 << 4)
|
||||
+#define CM_DEFAULT_TARGET_SHIFT 0
|
||||
+#define CM_DEFAULT_TARGET_MASK (0x3 << 0)
|
||||
+
|
||||
+/* GCR_CONTROL fields */
|
||||
+#define GCR_CONTROL_SYNCCTL (0x1 << 16)
|
||||
|
||||
/* GCR_REV CM versions */
|
||||
#define GCR_REV_CM3 0x0800
|
||||
|
||||
+/* GCR_GIC_BASE fields */
|
||||
+#define GCR_GIC_BASE_ADDRMASK_SHIFT 7
|
||||
+#define GCR_GIC_BASE_ADDRMASK (0x1ffffff << 7)
|
||||
+#define GCR_GIC_EN (0x1 << 0)
|
||||
+
|
||||
+/* GCR_CPC_BASE fields */
|
||||
+#define GCR_CPC_BASE_ADDRMASK_SHIFT 15
|
||||
+#define GCR_CPC_BASE_ADDRMASK (0x1ffff << 15)
|
||||
+#define GCR_CPC_EN (0x1 << 0)
|
||||
+
|
||||
+/* GCR_REGn_MASK fields */
|
||||
+#define GCR_REGn_MASK_ADDRMASK_SHIFT 16
|
||||
+#define GCR_REGn_MASK_ADDRMASK (0xffff << 16)
|
||||
+#define GCR_REGn_MASK_CCAOVR_SHIFT 5
|
||||
+#define GCR_REGn_MASK_CCAOVR (0x7 << 5)
|
||||
+#define GCR_REGn_MASK_CCAOVREN (1 << 4)
|
||||
+#define GCR_REGn_MASK_DROPL2 (1 << 2)
|
||||
+#define GCR_REGn_MASK_CMTGT_SHIFT 0
|
||||
+#define GCR_REGn_MASK_CMTGT (0x3 << 0)
|
||||
+#define GCR_REGn_MASK_CMTGT_DISABLED 0x0
|
||||
+#define GCR_REGn_MASK_CMTGT_MEM 0x1
|
||||
+#define GCR_REGn_MASK_CMTGT_IOCU0 0x2
|
||||
+#define GCR_REGn_MASK_CMTGT_IOCU1 0x3
|
||||
+
|
||||
+/* GCR_CPC_STATUS fields */
|
||||
+#define GCR_CPC_EX (0x1 << 0)
|
||||
+
|
||||
/* GCR_L2_CONFIG fields */
|
||||
#define GCR_L2_CONFIG_ASSOC_SHIFT 0
|
||||
#define GCR_L2_CONFIG_ASSOC_BITS 8
|
||||
@@ -36,6 +99,10 @@
|
||||
#define GCR_Cx_COHERENCE_DOM_EN (0xff << 0)
|
||||
#define GCR_Cx_COHERENCE_EN (0x1 << 0)
|
||||
|
||||
+/* GCR_Cx_OTHER fields */
|
||||
+#define GCR_Cx_OTHER_CORENUM_SHIFT 16
|
||||
+#define GCR_Cx_OTHER_CORENUM (0xffff << 16)
|
||||
+
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <asm/io.h>
|
||||
@ -0,0 +1,35 @@
|
||||
From 71ebc3d25147172e219ea87bec061f751257395b Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:21:45 +0800
|
||||
Subject: [PATCH 03/25] mips: add __image_copy_len for SPL linker script
|
||||
|
||||
This patch adds __image_copy_len needed by TPL of MT7621 SoC.
|
||||
The __image_copy_len represents the binary blob size of both SPL/TPL
|
||||
binaries. To achieve this, __text_start/end are added for calculation.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/cpu/u-boot-spl.lds | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/arch/mips/cpu/u-boot-spl.lds
|
||||
+++ b/arch/mips/cpu/u-boot-spl.lds
|
||||
@@ -13,7 +13,9 @@ SECTIONS
|
||||
|
||||
. = ALIGN(4);
|
||||
.text : {
|
||||
+ __text_start = .;
|
||||
*(.text*)
|
||||
+ __text_end = .;
|
||||
} > .spl_mem
|
||||
|
||||
. = ALIGN(4);
|
||||
@@ -36,6 +38,7 @@ SECTIONS
|
||||
|
||||
. = ALIGN(4);
|
||||
__image_copy_end = .;
|
||||
+ __image_copy_len = __image_copy_end - __text_start;
|
||||
|
||||
_image_binary_end = .;
|
||||
|
||||
@ -0,0 +1,104 @@
|
||||
From d7cfa1cb5602a1d936df36ee70869753835de28e Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:21:51 +0800
|
||||
Subject: [PATCH 04/25] mips: add support for noncached_alloc()
|
||||
|
||||
This patch adds support for noncached_alloc() which was only supported by
|
||||
ARM platform.
|
||||
|
||||
Unlike the ARM platform, MMU is not used in u-boot for MIPS. Instead, KSEG
|
||||
is provided to access uncached memory. So most code of this patch is copied
|
||||
from cache.c of ARM platform, with only two differences:
|
||||
1. MMU is untouched in noncached_set_region()
|
||||
2. Address returned by noncached_alloc() is converted using KSEG1ADDR()
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/include/asm/system.h | 20 ++++++++++++++++
|
||||
arch/mips/lib/cache.c | 43 ++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 63 insertions(+)
|
||||
|
||||
--- a/arch/mips/include/asm/system.h
|
||||
+++ b/arch/mips/include/asm/system.h
|
||||
@@ -282,4 +282,24 @@ static inline void instruction_hazard_ba
|
||||
: "=&r"(tmp));
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
|
||||
+/* 1MB granularity */
|
||||
+#define MMU_SECTION_SHIFT 20
|
||||
+#define MMU_SECTION_SIZE (1 << MMU_SECTION_SHIFT)
|
||||
+
|
||||
+/**
|
||||
+ * noncached_init() - Initialize non-cached memory region
|
||||
+ *
|
||||
+ * Initialize non-cached memory area. This memory region will be typically
|
||||
+ * located right below the malloc() area and be accessed from KSEG1.
|
||||
+ *
|
||||
+ * It is called during the generic post-relocation init sequence.
|
||||
+ *
|
||||
+ * Return: 0 if OK
|
||||
+ */
|
||||
+int noncached_init(void);
|
||||
+
|
||||
+phys_addr_t noncached_alloc(size_t size, size_t align);
|
||||
+#endif /* CONFIG_SYS_NONCACHED_MEMORY */
|
||||
+
|
||||
#endif /* _ASM_SYSTEM_H */
|
||||
--- a/arch/mips/lib/cache.c
|
||||
+++ b/arch/mips/lib/cache.c
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <cpu_func.h>
|
||||
+#include <malloc.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/cacheops.h>
|
||||
#include <asm/cm.h>
|
||||
@@ -197,3 +198,45 @@ void dcache_disable(void)
|
||||
/* ensure the pipeline doesn't contain now-invalid instructions */
|
||||
instruction_hazard_barrier();
|
||||
}
|
||||
+
|
||||
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
|
||||
+static unsigned long noncached_start;
|
||||
+static unsigned long noncached_end;
|
||||
+static unsigned long noncached_next;
|
||||
+
|
||||
+void noncached_set_region(void)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+int noncached_init(void)
|
||||
+{
|
||||
+ phys_addr_t start, end;
|
||||
+ size_t size;
|
||||
+
|
||||
+ /* If this calculation changes, update board_f.c:reserve_noncached() */
|
||||
+ end = ALIGN(mem_malloc_start, MMU_SECTION_SIZE) - MMU_SECTION_SIZE;
|
||||
+ size = ALIGN(CONFIG_SYS_NONCACHED_MEMORY, MMU_SECTION_SIZE);
|
||||
+ start = end - size;
|
||||
+
|
||||
+ debug("mapping memory %pa-%pa non-cached\n", &start, &end);
|
||||
+
|
||||
+ noncached_start = start;
|
||||
+ noncached_end = end;
|
||||
+ noncached_next = start;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+phys_addr_t noncached_alloc(size_t size, size_t align)
|
||||
+{
|
||||
+ phys_addr_t next = ALIGN(noncached_next, align);
|
||||
+
|
||||
+ if (next >= noncached_end || (noncached_end - next) < size)
|
||||
+ return 0;
|
||||
+
|
||||
+ debug("allocated %zu bytes of uncached memory @%pa\n", size, &next);
|
||||
+ noncached_next = next + size;
|
||||
+
|
||||
+ return CKSEG1ADDR(next);
|
||||
+}
|
||||
+#endif /* CONFIG_SYS_NONCACHED_MEMORY */
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,428 @@
|
||||
From b1549087ecd1eb53f6173b17b473134fd6cca157 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:26 +0800
|
||||
Subject: [PATCH 06/25] mips: mtmips: add two reference boards for mt7621
|
||||
|
||||
The mt7621_rfb board supports integrated giga PHYs plus one external
|
||||
giga PHYs. It also has up to 512MiB DDR3, 16MB SPI-NOR, 3 mini PCI-e x1
|
||||
slots, SDXC and USB.
|
||||
|
||||
The mt7621_nand_rfb board is almost the same as mt7621_rfb board, but it
|
||||
uses NAND flash and SDXC is not available.
|
||||
|
||||
Reviewed-by: Stefan Roese <sr@denx.de>
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/dts/Makefile | 2 +
|
||||
arch/mips/dts/mediatek,mt7621-nand-rfb.dts | 67 +++++++++++++++++
|
||||
arch/mips/dts/mediatek,mt7621-rfb.dts | 82 +++++++++++++++++++++
|
||||
arch/mips/mach-mtmips/mt7621/Kconfig | 20 +++++
|
||||
board/mediatek/mt7621/MAINTAINERS | 8 ++
|
||||
board/mediatek/mt7621/Makefile | 3 +
|
||||
board/mediatek/mt7621/board.c | 6 ++
|
||||
configs/mt7621_nand_rfb_defconfig | 85 ++++++++++++++++++++++
|
||||
configs/mt7621_rfb_defconfig | 82 +++++++++++++++++++++
|
||||
9 files changed, 355 insertions(+)
|
||||
create mode 100644 arch/mips/dts/mediatek,mt7621-nand-rfb.dts
|
||||
create mode 100644 arch/mips/dts/mediatek,mt7621-rfb.dts
|
||||
create mode 100644 board/mediatek/mt7621/MAINTAINERS
|
||||
create mode 100644 board/mediatek/mt7621/Makefile
|
||||
create mode 100644 board/mediatek/mt7621/board.c
|
||||
create mode 100644 configs/mt7621_nand_rfb_defconfig
|
||||
create mode 100644 configs/mt7621_rfb_defconfig
|
||||
|
||||
--- a/arch/mips/dts/Makefile
|
||||
+++ b/arch/mips/dts/Makefile
|
||||
@@ -16,6 +16,8 @@ dtb-$(CONFIG_BOARD_COMTREND_WAP5813N) +=
|
||||
dtb-$(CONFIG_BOARD_HUAWEI_HG556A) += huawei,hg556a.dtb
|
||||
dtb-$(CONFIG_BOARD_MT7620_RFB) += mediatek,mt7620-rfb.dtb
|
||||
dtb-$(CONFIG_BOARD_MT7620_MT7530_RFB) += mediatek,mt7620-mt7530-rfb.dtb
|
||||
+dtb-$(CONFIG_BOARD_MT7621_RFB) += mediatek,mt7621-rfb.dtb
|
||||
+dtb-$(CONFIG_BOARD_MT7621_NAND_RFB) += mediatek,mt7621-nand-rfb.dtb
|
||||
dtb-$(CONFIG_BOARD_MT7628_RFB) += mediatek,mt7628-rfb.dtb
|
||||
dtb-$(CONFIG_BOARD_GARDENA_SMART_GATEWAY_MT7688) += gardena-smart-gateway-mt7688.dtb
|
||||
dtb-$(CONFIG_BOARD_LINKIT_SMART_7688) += linkit-smart-7688.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/mips/dts/mediatek,mt7621-nand-rfb.dts
|
||||
@@ -0,0 +1,67 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "mt7621.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "mediatek,mt7621-nand-rfb", "mediatek,mt7621-soc";
|
||||
+ model = "MediaTek MT7621 RFB (NAND)";
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &uart0;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = &uart0;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ state_default: pin_state {
|
||||
+ nand {
|
||||
+ groups = "spi", "sdxc";
|
||||
+ function = "nand";
|
||||
+ };
|
||||
+
|
||||
+ gpios {
|
||||
+ groups = "i2c", "uart3", "pcie reset";
|
||||
+ function = "gpio";
|
||||
+ };
|
||||
+
|
||||
+ wdt {
|
||||
+ groups = "wdt";
|
||||
+ function = "wdt rst";
|
||||
+ };
|
||||
+
|
||||
+ jtag {
|
||||
+ groups = "jtag";
|
||||
+ function = "jtag";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpio {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+ð {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ssusb {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u3phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/arch/mips/dts/mediatek,mt7621-rfb.dts
|
||||
@@ -0,0 +1,82 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "mt7621.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "mediatek,mt7621-rfb", "mediatek,mt7621-soc";
|
||||
+ model = "MediaTek MT7621 RFB (SPI-NOR)";
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &uart0;
|
||||
+ spi0 = &spi;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = &uart0;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ state_default: pin_state {
|
||||
+ gpios {
|
||||
+ groups = "i2c", "uart3", "pcie reset";
|
||||
+ function = "gpio";
|
||||
+ };
|
||||
+
|
||||
+ wdt {
|
||||
+ groups = "wdt";
|
||||
+ function = "wdt rst";
|
||||
+ };
|
||||
+
|
||||
+ jtag {
|
||||
+ groups = "jtag";
|
||||
+ function = "jtag";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpio {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spi {
|
||||
+ status = "okay";
|
||||
+ num-cs = <2>;
|
||||
+
|
||||
+ spi-flash@0 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ compatible = "jedec,spi-nor";
|
||||
+ spi-max-frequency = <25000000>;
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc {
|
||||
+ cap-sd-highspeed;
|
||||
+
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ssusb {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u3phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
--- a/arch/mips/mach-mtmips/mt7621/Kconfig
|
||||
+++ b/arch/mips/mach-mtmips/mt7621/Kconfig
|
||||
@@ -79,6 +79,26 @@ config MT7621_BOOT_FROM_NAND
|
||||
choice
|
||||
prompt "Board select"
|
||||
|
||||
+config BOARD_MT7621_RFB
|
||||
+ bool "MediaTek MT7621 RFB (SPI-NOR)"
|
||||
+ help
|
||||
+ The reference design of MT7621A (WS3010) booting from SPI-NOR flash.
|
||||
+ The board can be configured with DDR2 (64MiB~256MiB) or DDR3
|
||||
+ (128MiB~512MiB). The board has 16 MiB SPI-NOR flash, built-in MT7530
|
||||
+ GbE switch, 1 UART, 1 USB 2.0 host, 1 USB 3.0 host, 1 SDXC, 3 PCIe
|
||||
+ sockets, 1 RGMII to external GbE PHY, 2 audio jacks (in/out),
|
||||
+ JTAG pins and expansion GPIO pins.
|
||||
+
|
||||
+config BOARD_MT7621_NAND_RFB
|
||||
+ bool "MediaTek MT7621 RFB (NAND)"
|
||||
+ help
|
||||
+ The reference design of MT7621A (WS3010) booting from NAND flash.
|
||||
+ The board can be configured with DDR2 (64MiB~256MiB) or DDR3
|
||||
+ (128MiB~512MiB). The board has 128 MiB parallel NAND flash, built-in
|
||||
+ MT7530 GbE switch, 1 UART, 1 USB 2.0 host, 1 USB 3.0 host, 3 PCIe
|
||||
+ sockets, 1 RGMII to external GbE PHY, 2 audio jacks (in/out),
|
||||
+ JTAG pins and expansion GPIO pins.
|
||||
+
|
||||
endchoice
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
--- /dev/null
|
||||
+++ b/board/mediatek/mt7621/MAINTAINERS
|
||||
@@ -0,0 +1,8 @@
|
||||
+MT7621_RFB BOARD
|
||||
+M: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+S: Maintained
|
||||
+F: board/mediatek/mt7621
|
||||
+F: configs/mt7621_rfb_defconfig
|
||||
+F: configs/mt7621_nand_rfb_defconfig
|
||||
+F: arch/mips/dts/mediatek,mt7621-rfb.dts
|
||||
+F: arch/mips/dts/mediatek,mt7621-nand-rfb.dts
|
||||
--- /dev/null
|
||||
+++ b/board/mediatek/mt7621/Makefile
|
||||
@@ -0,0 +1,3 @@
|
||||
+# SPDX-License-Identifier: GPL-2.0
|
||||
+
|
||||
+obj-y += board.o
|
||||
--- /dev/null
|
||||
+++ b/board/mediatek/mt7621/board.c
|
||||
@@ -0,0 +1,6 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
--- /dev/null
|
||||
+++ b/configs/mt7621_nand_rfb_defconfig
|
||||
@@ -0,0 +1,85 @@
|
||||
+CONFIG_MIPS=y
|
||||
+CONFIG_SYS_MALLOC_LEN=0x100000
|
||||
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
+CONFIG_NR_DRAM_BANKS=1
|
||||
+CONFIG_ENV_SIZE=0x1000
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="mediatek,mt7621-nand-rfb"
|
||||
+CONFIG_SPL_SERIAL=y
|
||||
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x100000
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_DEBUG_UART_BASE=0xbe000c00
|
||||
+CONFIG_DEBUG_UART_CLOCK=50000000
|
||||
+CONFIG_SYS_LOAD_ADDR=0x83000000
|
||||
+CONFIG_ARCH_MTMIPS=y
|
||||
+CONFIG_SOC_MT7621=y
|
||||
+CONFIG_MT7621_BOOT_FROM_NAND=y
|
||||
+CONFIG_BOARD_MT7621_NAND_RFB=y
|
||||
+# CONFIG_MIPS_CACHE_SETUP is not set
|
||||
+# CONFIG_MIPS_CACHE_DISABLE is not set
|
||||
+CONFIG_RESTORE_EXCEPTION_VECTOR_BASE=y
|
||||
+CONFIG_MIPS_BOOT_FDT=y
|
||||
+CONFIG_DEBUG_UART=y
|
||||
+CONFIG_FIT=y
|
||||
+# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
|
||||
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
|
||||
+CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||
+CONFIG_SPL_NAND_SUPPORT=y
|
||||
+CONFIG_SPL_NAND_BASE=y
|
||||
+CONFIG_SPL_NAND_IDENT=y
|
||||
+# CONFIG_BOOTM_NETBSD is not set
|
||||
+# CONFIG_BOOTM_PLAN9 is not set
|
||||
+# CONFIG_BOOTM_RTEMS is not set
|
||||
+# CONFIG_BOOTM_VXWORKS is not set
|
||||
+# CONFIG_CMD_ELF is not set
|
||||
+# CONFIG_CMD_XIMG is not set
|
||||
+# CONFIG_CMD_CRC32 is not set
|
||||
+# CONFIG_CMD_DM is not set
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+CONFIG_CMD_GPIO=y
|
||||
+# CONFIG_CMD_LOADS is not set
|
||||
+CONFIG_CMD_MMC=y
|
||||
+CONFIG_CMD_MTD=y
|
||||
+CONFIG_CMD_PART=y
|
||||
+# CONFIG_CMD_PINMUX is not set
|
||||
+CONFIG_CMD_USB=y
|
||||
+# CONFIG_CMD_NFS is not set
|
||||
+CONFIG_CMD_FAT=y
|
||||
+CONFIG_CMD_FS_GENERIC=y
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_ISO_PARTITION is not set
|
||||
+CONFIG_EFI_PARTITION=y
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_PARTITION_TYPE_GUID=y
|
||||
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||
+CONFIG_NET_RANDOM_ETHADDR=y
|
||||
+# CONFIG_I2C is not set
|
||||
+# CONFIG_INPUT is not set
|
||||
+CONFIG_MMC=y
|
||||
+# CONFIG_MMC_QUIRKS is not set
|
||||
+# CONFIG_MMC_HW_PARTITIONING is not set
|
||||
+CONFIG_MMC_MTK=y
|
||||
+CONFIG_MTD=y
|
||||
+CONFIG_DM_MTD=y
|
||||
+CONFIG_MTD_RAW_NAND=y
|
||||
+CONFIG_NAND_MT7621=y
|
||||
+CONFIG_SYS_NAND_ONFI_DETECTION=y
|
||||
+CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
|
||||
+CONFIG_SYS_NAND_U_BOOT_OFFS=0x0
|
||||
+CONFIG_MEDIATEK_ETH=y
|
||||
+CONFIG_PHY=y
|
||||
+CONFIG_PHY_MTK_TPHY=y
|
||||
+CONFIG_DEBUG_UART_SHIFT=2
|
||||
+CONFIG_SYSRESET=y
|
||||
+CONFIG_SYSRESET_RESETCTL=y
|
||||
+CONFIG_USB=y
|
||||
+CONFIG_USB_XHCI_HCD=y
|
||||
+CONFIG_USB_XHCI_MTK=y
|
||||
+CONFIG_USB_STORAGE=y
|
||||
+CONFIG_WDT=y
|
||||
+CONFIG_WDT_MT7621=y
|
||||
+CONFIG_FAT_WRITE=y
|
||||
+# CONFIG_BINMAN_FDT is not set
|
||||
+CONFIG_LZMA=y
|
||||
+# CONFIG_GZIP is not set
|
||||
+CONFIG_SPL_LZMA=y
|
||||
--- /dev/null
|
||||
+++ b/configs/mt7621_rfb_defconfig
|
||||
@@ -0,0 +1,82 @@
|
||||
+CONFIG_MIPS=y
|
||||
+CONFIG_SYS_MALLOC_LEN=0x100000
|
||||
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
+CONFIG_NR_DRAM_BANKS=1
|
||||
+CONFIG_ENV_SIZE=0x1000
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="mediatek,mt7621-rfb"
|
||||
+CONFIG_SPL_SERIAL=y
|
||||
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x40000
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_DEBUG_UART_BASE=0xbe000c00
|
||||
+CONFIG_DEBUG_UART_CLOCK=50000000
|
||||
+CONFIG_SYS_LOAD_ADDR=0x83000000
|
||||
+CONFIG_ARCH_MTMIPS=y
|
||||
+CONFIG_SOC_MT7621=y
|
||||
+# CONFIG_MIPS_CACHE_SETUP is not set
|
||||
+# CONFIG_MIPS_CACHE_DISABLE is not set
|
||||
+CONFIG_RESTORE_EXCEPTION_VECTOR_BASE=y
|
||||
+CONFIG_MIPS_BOOT_FDT=y
|
||||
+CONFIG_DEBUG_UART=y
|
||||
+CONFIG_TPL_SYS_MALLOC_F_LEN=0x1000
|
||||
+CONFIG_FIT=y
|
||||
+# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
|
||||
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
|
||||
+CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||
+CONFIG_SPL_NOR_SUPPORT=y
|
||||
+CONFIG_TPL=y
|
||||
+# CONFIG_TPL_FRAMEWORK is not set
|
||||
+# CONFIG_BOOTM_NETBSD is not set
|
||||
+# CONFIG_BOOTM_PLAN9 is not set
|
||||
+# CONFIG_BOOTM_RTEMS is not set
|
||||
+# CONFIG_BOOTM_VXWORKS is not set
|
||||
+# CONFIG_CMD_ELF is not set
|
||||
+# CONFIG_CMD_XIMG is not set
|
||||
+# CONFIG_CMD_CRC32 is not set
|
||||
+# CONFIG_CMD_DM is not set
|
||||
+CONFIG_CMD_GPIO=y
|
||||
+# CONFIG_CMD_LOADS is not set
|
||||
+CONFIG_CMD_MMC=y
|
||||
+CONFIG_CMD_PART=y
|
||||
+# CONFIG_CMD_PINMUX is not set
|
||||
+CONFIG_CMD_SPI=y
|
||||
+# CONFIG_CMD_NFS is not set
|
||||
+CONFIG_DOS_PARTITION=y
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_ISO_PARTITION is not set
|
||||
+CONFIG_EFI_PARTITION=y
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_PARTITION_TYPE_GUID=y
|
||||
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||
+CONFIG_NET_RANDOM_ETHADDR=y
|
||||
+# CONFIG_I2C is not set
|
||||
+# CONFIG_INPUT is not set
|
||||
+CONFIG_MMC=y
|
||||
+# CONFIG_MMC_QUIRKS is not set
|
||||
+# CONFIG_MMC_HW_PARTITIONING is not set
|
||||
+CONFIG_MMC_MTK=y
|
||||
+CONFIG_SF_DEFAULT_SPEED=20000000
|
||||
+CONFIG_SPI_FLASH_BAR=y
|
||||
+CONFIG_SPI_FLASH_EON=y
|
||||
+CONFIG_SPI_FLASH_GIGADEVICE=y
|
||||
+CONFIG_SPI_FLASH_ISSI=y
|
||||
+CONFIG_SPI_FLASH_MACRONIX=y
|
||||
+CONFIG_SPI_FLASH_SPANSION=y
|
||||
+CONFIG_SPI_FLASH_STMICRO=y
|
||||
+CONFIG_SPI_FLASH_WINBOND=y
|
||||
+CONFIG_SPI_FLASH_XMC=y
|
||||
+CONFIG_SPI_FLASH_XTX=y
|
||||
+CONFIG_MEDIATEK_ETH=y
|
||||
+CONFIG_PHY=y
|
||||
+CONFIG_PHY_MTK_TPHY=y
|
||||
+CONFIG_DEBUG_UART_SHIFT=2
|
||||
+CONFIG_SPI=y
|
||||
+CONFIG_MT7621_SPI=y
|
||||
+CONFIG_SYSRESET=y
|
||||
+CONFIG_SYSRESET_RESETCTL=y
|
||||
+CONFIG_WDT=y
|
||||
+CONFIG_WDT_MT7621=y
|
||||
+# CONFIG_BINMAN_FDT is not set
|
||||
+CONFIG_LZMA=y
|
||||
+# CONFIG_GZIP is not set
|
||||
+CONFIG_SPL_LZMA=y
|
||||
@ -0,0 +1,93 @@
|
||||
From 3fed02d930597c53f1c8500aff14581bb87a1e3d Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:31 +0800
|
||||
Subject: [PATCH 07/25] doc: mediatek: add documentation for mt7621 reference
|
||||
boards
|
||||
|
||||
The MT7621 requires external binary blob being executed during u-boot's
|
||||
boot-up flow. It's necessary to provide a guide here for users to correctly
|
||||
build the u-boot.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
doc/board/index.rst | 1 +
|
||||
doc/board/mediatek/index.rst | 9 +++++++
|
||||
doc/board/mediatek/mt7621.rst | 48 +++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 58 insertions(+)
|
||||
create mode 100644 doc/board/mediatek/index.rst
|
||||
create mode 100644 doc/board/mediatek/mt7621.rst
|
||||
|
||||
--- a/doc/board/index.rst
|
||||
+++ b/doc/board/index.rst
|
||||
@@ -23,6 +23,7 @@ Board-specific doc
|
||||
highbank/index
|
||||
intel/index
|
||||
kontron/index
|
||||
+ mediatek/index
|
||||
microchip/index
|
||||
nokia/index
|
||||
nxp/index
|
||||
--- /dev/null
|
||||
+++ b/doc/board/mediatek/index.rst
|
||||
@@ -0,0 +1,9 @@
|
||||
+.. SPDX-License-Identifier: GPL-2.0+
|
||||
+
|
||||
+Mediatek
|
||||
+=========
|
||||
+
|
||||
+.. toctree::
|
||||
+ :maxdepth: 2
|
||||
+
|
||||
+ mt7621
|
||||
--- /dev/null
|
||||
+++ b/doc/board/mediatek/mt7621.rst
|
||||
@@ -0,0 +1,48 @@
|
||||
+.. SPDX-License-Identifier: GPL-2.0
|
||||
+
|
||||
+mt7621_rfb/mt7621_nand_rfb
|
||||
+==========================
|
||||
+
|
||||
+U-Boot for the MediaTek MT7621 boards
|
||||
+
|
||||
+Quick Start
|
||||
+-----------
|
||||
+
|
||||
+- Get the DDR initialization binary blob
|
||||
+- Configure CPU and DDR parameters
|
||||
+- Build U-Boot
|
||||
+
|
||||
+Get the DDR initialization binary blob
|
||||
+--------------------------------------
|
||||
+
|
||||
+Download one from:
|
||||
+ - https://raw.githubusercontent.com/mtk-openwrt/mt7621-lowlevel-preloader/master/mt7621_stage_sram.bin
|
||||
+ - https://raw.githubusercontent.com/mtk-openwrt/mt7621-lowlevel-preloader/master/mt7621_stage_sram_noprint.bin
|
||||
+
|
||||
+mt7621_stage_sram_noprint.bin has removed all output logs. To use this one,
|
||||
+download and rename it to mt7621_stage_sram.bin
|
||||
+
|
||||
+Put the binary blob to the u-boot build directory.
|
||||
+
|
||||
+Configure CPU and DDR parameters
|
||||
+--------------------------------
|
||||
+
|
||||
+menuconfig > MIPS architecture > MediaTek MIPS platforms > CPU & DDR configuration
|
||||
+
|
||||
+Select the correct DDR timing parameters for your board. The size shown here
|
||||
+must match the DDR size of you board.
|
||||
+
|
||||
+The frequency of CPU and DDR can also be adjusted.
|
||||
+
|
||||
+Build U-Boot
|
||||
+------------
|
||||
+
|
||||
+.. code-block:: bash
|
||||
+
|
||||
+ $ export CROSS_COMPILE=mipsel-linux-
|
||||
+ $ make O=build mt7621_rfb_defconfig # or mt7621_nand_rfb_defconfig
|
||||
+ $ cp mt7621_stage_sram.bin ./build/mt7621_stage_sram.bin
|
||||
+ $ # or cp mt7621_stage_sram_noprint.bin ./build/mt7621_stage_sram.bin
|
||||
+ $ make O=build
|
||||
+
|
||||
+Burn the u-boot-mt7621.bin to the SPI-NOR or NAND flash.
|
||||
@ -0,0 +1,367 @@
|
||||
From c2e579662748cb5d3bf3e31f58d99c4db4d102c1 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:36 +0800
|
||||
Subject: [PATCH 08/25] clk: mtmips: add clock driver for MediaTek MT7621 SoC
|
||||
|
||||
This patch adds a clock driver for MediaTek MT7621 SoC.
|
||||
This driver provides clock gate control as well as getting clock frequency
|
||||
for CPU/SYS/XTAL and some peripherals.
|
||||
|
||||
Reviewed-by: Sean Anderson <seanga2@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/clk/mtmips/Makefile | 1 +
|
||||
drivers/clk/mtmips/clk-mt7621.c | 288 +++++++++++++++++++++++++
|
||||
include/dt-bindings/clock/mt7621-clk.h | 46 ++++
|
||||
3 files changed, 335 insertions(+)
|
||||
create mode 100644 drivers/clk/mtmips/clk-mt7621.c
|
||||
create mode 100644 include/dt-bindings/clock/mt7621-clk.h
|
||||
|
||||
--- a/drivers/clk/mtmips/Makefile
|
||||
+++ b/drivers/clk/mtmips/Makefile
|
||||
@@ -1,4 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
obj-$(CONFIG_SOC_MT7620) += clk-mt7620.o
|
||||
+obj-$(CONFIG_SOC_MT7621) += clk-mt7621.o
|
||||
obj-$(CONFIG_SOC_MT7628) += clk-mt7628.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/clk/mtmips/clk-mt7621.c
|
||||
@@ -0,0 +1,288 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#include <clk-uclass.h>
|
||||
+#include <dm.h>
|
||||
+#include <dm/device_compat.h>
|
||||
+#include <regmap.h>
|
||||
+#include <syscon.h>
|
||||
+#include <dt-bindings/clock/mt7621-clk.h>
|
||||
+#include <linux/io.h>
|
||||
+#include <linux/bitops.h>
|
||||
+#include <linux/bitfield.h>
|
||||
+
|
||||
+#define SYSC_MAP_SIZE 0x100
|
||||
+#define MEMC_MAP_SIZE 0x1000
|
||||
+
|
||||
+/* SYSC */
|
||||
+#define SYSCFG0_REG 0x10
|
||||
+#define XTAL_MODE_SEL GENMASK(8, 6)
|
||||
+
|
||||
+#define CLKCFG0_REG 0x2c
|
||||
+#define CPU_CLK_SEL GENMASK(31, 30)
|
||||
+#define PERI_CLK_SEL BIT(4)
|
||||
+
|
||||
+#define CLKCFG1_REG 0x30
|
||||
+
|
||||
+#define CUR_CLK_STS_REG 0x44
|
||||
+#define CUR_CPU_FDIV GENMASK(12, 8)
|
||||
+#define CUR_CPU_FFRAC GENMASK(4, 0)
|
||||
+
|
||||
+/* MEMC */
|
||||
+#define MEMPLL1_REG 0x0604
|
||||
+#define RG_MEPL_DIV2_SEL GENMASK(2, 1)
|
||||
+
|
||||
+#define MEMPLL6_REG 0x0618
|
||||
+#define MEMPLL18_REG 0x0648
|
||||
+#define RG_MEPL_PREDIV GENMASK(13, 12)
|
||||
+#define RG_MEPL_FBDIV GENMASK(10, 4)
|
||||
+
|
||||
+/* Fixed 500M clock */
|
||||
+#define GMPLL_CLK 500000000
|
||||
+
|
||||
+struct mt7621_clk_priv {
|
||||
+ void __iomem *sysc_base;
|
||||
+ int cpu_clk;
|
||||
+ int ddr_clk;
|
||||
+ int sys_clk;
|
||||
+ int xtal_clk;
|
||||
+};
|
||||
+
|
||||
+enum mt7621_clk_src {
|
||||
+ CLK_SRC_CPU,
|
||||
+ CLK_SRC_DDR,
|
||||
+ CLK_SRC_SYS,
|
||||
+ CLK_SRC_XTAL,
|
||||
+ CLK_SRC_PERI,
|
||||
+ CLK_SRC_125M,
|
||||
+ CLK_SRC_150M,
|
||||
+ CLK_SRC_250M,
|
||||
+ CLK_SRC_270M,
|
||||
+
|
||||
+ __CLK_SRC_MAX
|
||||
+};
|
||||
+
|
||||
+struct mt7621_clk_map {
|
||||
+ u32 cgbit;
|
||||
+ enum mt7621_clk_src clksrc;
|
||||
+};
|
||||
+
|
||||
+#define CLK_MAP(_id, _cg, _src) \
|
||||
+ [_id] = { .cgbit = (_cg), .clksrc = (_src) }
|
||||
+
|
||||
+#define CLK_MAP_SRC(_id, _src) \
|
||||
+ [_id] = { .cgbit = UINT32_MAX, .clksrc = (_src) }
|
||||
+
|
||||
+static const struct mt7621_clk_map mt7621_clk_mappings[] = {
|
||||
+ CLK_MAP_SRC(MT7621_CLK_XTAL, CLK_SRC_XTAL),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_CPU, CLK_SRC_CPU),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_BUS, CLK_SRC_SYS),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_50M, CLK_SRC_PERI),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_125M, CLK_SRC_125M),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_150M, CLK_SRC_150M),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_250M, CLK_SRC_250M),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_270M, CLK_SRC_270M),
|
||||
+
|
||||
+ CLK_MAP(MT7621_CLK_HSDMA, 5, CLK_SRC_150M),
|
||||
+ CLK_MAP(MT7621_CLK_FE, 6, CLK_SRC_250M),
|
||||
+ CLK_MAP(MT7621_CLK_SP_DIVTX, 7, CLK_SRC_270M),
|
||||
+ CLK_MAP(MT7621_CLK_TIMER, 8, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_PCM, 11, CLK_SRC_270M),
|
||||
+ CLK_MAP(MT7621_CLK_PIO, 13, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_GDMA, 14, CLK_SRC_SYS),
|
||||
+ CLK_MAP(MT7621_CLK_NAND, 15, CLK_SRC_125M),
|
||||
+ CLK_MAP(MT7621_CLK_I2C, 16, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_I2S, 17, CLK_SRC_270M),
|
||||
+ CLK_MAP(MT7621_CLK_SPI, 18, CLK_SRC_SYS),
|
||||
+ CLK_MAP(MT7621_CLK_UART1, 19, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_UART2, 20, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_UART3, 21, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_ETH, 23, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_PCIE0, 24, CLK_SRC_125M),
|
||||
+ CLK_MAP(MT7621_CLK_PCIE1, 25, CLK_SRC_125M),
|
||||
+ CLK_MAP(MT7621_CLK_PCIE2, 26, CLK_SRC_125M),
|
||||
+ CLK_MAP(MT7621_CLK_CRYPTO, 29, CLK_SRC_250M),
|
||||
+ CLK_MAP(MT7621_CLK_SHXC, 30, CLK_SRC_PERI),
|
||||
+
|
||||
+ CLK_MAP_SRC(MT7621_CLK_MAX, __CLK_SRC_MAX),
|
||||
+
|
||||
+ CLK_MAP_SRC(MT7621_CLK_DDR, CLK_SRC_DDR),
|
||||
+};
|
||||
+
|
||||
+static ulong mt7621_clk_get_rate(struct clk *clk)
|
||||
+{
|
||||
+ struct mt7621_clk_priv *priv = dev_get_priv(clk->dev);
|
||||
+ u32 val;
|
||||
+
|
||||
+ switch (mt7621_clk_mappings[clk->id].clksrc) {
|
||||
+ case CLK_SRC_CPU:
|
||||
+ return priv->cpu_clk;
|
||||
+ case CLK_SRC_DDR:
|
||||
+ return priv->ddr_clk;
|
||||
+ case CLK_SRC_SYS:
|
||||
+ return priv->sys_clk;
|
||||
+ case CLK_SRC_XTAL:
|
||||
+ return priv->xtal_clk;
|
||||
+ case CLK_SRC_PERI:
|
||||
+ val = readl(priv->sysc_base + CLKCFG0_REG);
|
||||
+ if (val & PERI_CLK_SEL)
|
||||
+ return priv->xtal_clk;
|
||||
+ else
|
||||
+ return GMPLL_CLK / 10;
|
||||
+ case CLK_SRC_125M:
|
||||
+ return 125000000;
|
||||
+ case CLK_SRC_150M:
|
||||
+ return 150000000;
|
||||
+ case CLK_SRC_250M:
|
||||
+ return 250000000;
|
||||
+ case CLK_SRC_270M:
|
||||
+ return 270000000;
|
||||
+ default:
|
||||
+ return 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static int mt7621_clk_enable(struct clk *clk)
|
||||
+{
|
||||
+ struct mt7621_clk_priv *priv = dev_get_priv(clk->dev);
|
||||
+ u32 cgbit;
|
||||
+
|
||||
+ cgbit = mt7621_clk_mappings[clk->id].cgbit;
|
||||
+ if (cgbit == UINT32_MAX)
|
||||
+ return -ENOSYS;
|
||||
+
|
||||
+ setbits_32(priv->sysc_base + CLKCFG1_REG, BIT(cgbit));
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int mt7621_clk_disable(struct clk *clk)
|
||||
+{
|
||||
+ struct mt7621_clk_priv *priv = dev_get_priv(clk->dev);
|
||||
+ u32 cgbit;
|
||||
+
|
||||
+ cgbit = mt7621_clk_mappings[clk->id].cgbit;
|
||||
+ if (cgbit == UINT32_MAX)
|
||||
+ return -ENOSYS;
|
||||
+
|
||||
+ clrbits_32(priv->sysc_base + CLKCFG1_REG, BIT(cgbit));
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int mt7621_clk_request(struct clk *clk)
|
||||
+{
|
||||
+ if (clk->id >= ARRAY_SIZE(mt7621_clk_mappings))
|
||||
+ return -EINVAL;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+const struct clk_ops mt7621_clk_ops = {
|
||||
+ .request = mt7621_clk_request,
|
||||
+ .enable = mt7621_clk_enable,
|
||||
+ .disable = mt7621_clk_disable,
|
||||
+ .get_rate = mt7621_clk_get_rate,
|
||||
+};
|
||||
+
|
||||
+static void mt7621_get_clocks(struct mt7621_clk_priv *priv, struct regmap *memc)
|
||||
+{
|
||||
+ u32 bs, xtal_sel, clkcfg0, cur_clk, mempll, dividx, fb;
|
||||
+ u32 xtal_clk, xtal_div, ffiv, ffrac, cpu_clk, ddr_clk;
|
||||
+ static const u32 xtal_div_tbl[] = {0, 1, 2, 2};
|
||||
+
|
||||
+ bs = readl(priv->sysc_base + SYSCFG0_REG);
|
||||
+ clkcfg0 = readl(priv->sysc_base + CLKCFG0_REG);
|
||||
+ cur_clk = readl(priv->sysc_base + CUR_CLK_STS_REG);
|
||||
+
|
||||
+ xtal_sel = FIELD_GET(XTAL_MODE_SEL, bs);
|
||||
+
|
||||
+ if (xtal_sel <= 2)
|
||||
+ xtal_clk = 20 * 1000 * 1000;
|
||||
+ else if (xtal_sel <= 5)
|
||||
+ xtal_clk = 40 * 1000 * 1000;
|
||||
+ else
|
||||
+ xtal_clk = 25 * 1000 * 1000;
|
||||
+
|
||||
+ switch (FIELD_GET(CPU_CLK_SEL, clkcfg0)) {
|
||||
+ case 0:
|
||||
+ cpu_clk = GMPLL_CLK;
|
||||
+ break;
|
||||
+ case 1:
|
||||
+ regmap_read(memc, MEMPLL18_REG, &mempll);
|
||||
+ dividx = FIELD_GET(RG_MEPL_PREDIV, mempll);
|
||||
+ fb = FIELD_GET(RG_MEPL_FBDIV, mempll);
|
||||
+ xtal_div = 1 << xtal_div_tbl[dividx];
|
||||
+ cpu_clk = (fb + 1) * xtal_clk / xtal_div;
|
||||
+ break;
|
||||
+ default:
|
||||
+ cpu_clk = xtal_clk;
|
||||
+ }
|
||||
+
|
||||
+ ffiv = FIELD_GET(CUR_CPU_FDIV, cur_clk);
|
||||
+ ffrac = FIELD_GET(CUR_CPU_FFRAC, cur_clk);
|
||||
+ cpu_clk = cpu_clk / ffiv * ffrac;
|
||||
+
|
||||
+ regmap_read(memc, MEMPLL6_REG, &mempll);
|
||||
+ dividx = FIELD_GET(RG_MEPL_PREDIV, mempll);
|
||||
+ fb = FIELD_GET(RG_MEPL_FBDIV, mempll);
|
||||
+ xtal_div = 1 << xtal_div_tbl[dividx];
|
||||
+ ddr_clk = fb * xtal_clk / xtal_div;
|
||||
+
|
||||
+ regmap_read(memc, MEMPLL1_REG, &bs);
|
||||
+ if (!FIELD_GET(RG_MEPL_DIV2_SEL, bs))
|
||||
+ ddr_clk *= 2;
|
||||
+
|
||||
+ priv->cpu_clk = cpu_clk;
|
||||
+ priv->sys_clk = cpu_clk / 4;
|
||||
+ priv->ddr_clk = ddr_clk;
|
||||
+ priv->xtal_clk = xtal_clk;
|
||||
+}
|
||||
+
|
||||
+static int mt7621_clk_probe(struct udevice *dev)
|
||||
+{
|
||||
+ struct mt7621_clk_priv *priv = dev_get_priv(dev);
|
||||
+ struct ofnode_phandle_args args;
|
||||
+ struct udevice *pdev;
|
||||
+ struct regmap *memc;
|
||||
+ int ret;
|
||||
+
|
||||
+ pdev = dev_get_parent(dev);
|
||||
+ if (!pdev)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ priv->sysc_base = dev_remap_addr(pdev);
|
||||
+ if (!priv->sysc_base)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ /* get corresponding memc phandle */
|
||||
+ ret = dev_read_phandle_with_args(dev, "mediatek,memc", NULL, 0, 0,
|
||||
+ &args);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ memc = syscon_node_to_regmap(args.node);
|
||||
+ if (IS_ERR(memc))
|
||||
+ return PTR_ERR(memc);
|
||||
+
|
||||
+ mt7621_get_clocks(priv, memc);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct udevice_id mt7621_clk_ids[] = {
|
||||
+ { .compatible = "mediatek,mt7621-clk" },
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
+U_BOOT_DRIVER(mt7621_clk) = {
|
||||
+ .name = "mt7621-clk",
|
||||
+ .id = UCLASS_CLK,
|
||||
+ .of_match = mt7621_clk_ids,
|
||||
+ .probe = mt7621_clk_probe,
|
||||
+ .priv_auto = sizeof(struct mt7621_clk_priv),
|
||||
+ .ops = &mt7621_clk_ops,
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/clock/mt7621-clk.h
|
||||
@@ -0,0 +1,46 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _DT_BINDINGS_MT7621_CLK_H_
|
||||
+#define _DT_BINDINGS_MT7621_CLK_H_
|
||||
+
|
||||
+#define MT7621_CLK_XTAL 0
|
||||
+#define MT7621_CLK_CPU 1
|
||||
+#define MT7621_CLK_BUS 2
|
||||
+#define MT7621_CLK_50M 3
|
||||
+#define MT7621_CLK_125M 4
|
||||
+#define MT7621_CLK_150M 5
|
||||
+#define MT7621_CLK_250M 6
|
||||
+#define MT7621_CLK_270M 7
|
||||
+
|
||||
+#define MT7621_CLK_HSDMA 8
|
||||
+#define MT7621_CLK_FE 9
|
||||
+#define MT7621_CLK_SP_DIVTX 10
|
||||
+#define MT7621_CLK_TIMER 11
|
||||
+#define MT7621_CLK_PCM 12
|
||||
+#define MT7621_CLK_PIO 13
|
||||
+#define MT7621_CLK_GDMA 14
|
||||
+#define MT7621_CLK_NAND 15
|
||||
+#define MT7621_CLK_I2C 16
|
||||
+#define MT7621_CLK_I2S 17
|
||||
+#define MT7621_CLK_SPI 18
|
||||
+#define MT7621_CLK_UART1 19
|
||||
+#define MT7621_CLK_UART2 20
|
||||
+#define MT7621_CLK_UART3 21
|
||||
+#define MT7621_CLK_ETH 22
|
||||
+#define MT7621_CLK_PCIE0 23
|
||||
+#define MT7621_CLK_PCIE1 24
|
||||
+#define MT7621_CLK_PCIE2 25
|
||||
+#define MT7621_CLK_CRYPTO 26
|
||||
+#define MT7621_CLK_SHXC 27
|
||||
+
|
||||
+#define MT7621_CLK_MAX 28
|
||||
+
|
||||
+/* for u-boot only */
|
||||
+#define MT7621_CLK_DDR 29
|
||||
+
|
||||
+#endif /* _DT_BINDINGS_MT7621_CLK_H_ */
|
||||
@ -0,0 +1,56 @@
|
||||
From 03035a6566300808c8845799b2f9ceca471aa61a Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:41 +0800
|
||||
Subject: [PATCH 09/25] reset: mtmips: add reset controller support for
|
||||
MediaTek MT7621 SoC
|
||||
|
||||
This patch adds reset controller bits definition header file for MediaTek
|
||||
MT7621 SoC
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
include/dt-bindings/reset/mt7621-reset.h | 38 ++++++++++++++++++++++++
|
||||
1 file changed, 38 insertions(+)
|
||||
create mode 100644 include/dt-bindings/reset/mt7621-reset.h
|
||||
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/reset/mt7621-reset.h
|
||||
@@ -0,0 +1,38 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _DT_BINDINGS_MT7621_RESET_H_
|
||||
+#define _DT_BINDINGS_MT7621_RESET_H_
|
||||
+
|
||||
+#define RST_PPE 31
|
||||
+#define RST_SDXC 30
|
||||
+#define RST_CRYPTO 29
|
||||
+#define RST_AUX_STCK 28
|
||||
+#define RST_PCIE2 26
|
||||
+#define RST_PCIE1 25
|
||||
+#define RST_PCIE0 24
|
||||
+#define RST_GMAC 23
|
||||
+#define RST_UART3 21
|
||||
+#define RST_UART2 20
|
||||
+#define RST_UART1 19
|
||||
+#define RST_SPI 18
|
||||
+#define RST_I2S 17
|
||||
+#define RST_I2C 16
|
||||
+#define RST_NFI 15
|
||||
+#define RST_GDMA 14
|
||||
+#define RST_PIO 13
|
||||
+#define RST_PCM 11
|
||||
+#define RST_MC 10
|
||||
+#define RST_INTC 9
|
||||
+#define RST_TIMER 8
|
||||
+#define RST_SPDIFTX 7
|
||||
+#define RST_FE 6
|
||||
+#define RST_HSDMA 5
|
||||
+#define RST_MCM 2
|
||||
+#define RST_SYS 0
|
||||
+
|
||||
+#endif /* _DT_BINDINGS_MT7621_RESET_H_ */
|
||||
@ -0,0 +1,395 @@
|
||||
From 3cf9e2daca330a0ba89d3793ceb09037c788db46 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:49 +0800
|
||||
Subject: [PATCH 10/25] pinctrl: mtmips: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch adds pinctrl support for MediaTek MT7621 SoC.
|
||||
The MT7621 SoC supports pinconf, but it is not the same as mt7628.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/pinctrl/mtmips/Kconfig | 9 +
|
||||
drivers/pinctrl/mtmips/Makefile | 1 +
|
||||
drivers/pinctrl/mtmips/pinctrl-mt7621.c | 306 ++++++++++++++++++
|
||||
.../pinctrl/mtmips/pinctrl-mtmips-common.c | 4 +-
|
||||
.../pinctrl/mtmips/pinctrl-mtmips-common.h | 12 +
|
||||
5 files changed, 330 insertions(+), 2 deletions(-)
|
||||
create mode 100644 drivers/pinctrl/mtmips/pinctrl-mt7621.c
|
||||
|
||||
--- a/drivers/pinctrl/mtmips/Kconfig
|
||||
+++ b/drivers/pinctrl/mtmips/Kconfig
|
||||
@@ -12,6 +12,15 @@ config PINCTRL_MT7620
|
||||
The driver is controlled by a device tree node which contains
|
||||
the pin mux functions for each available pin groups.
|
||||
|
||||
+config PINCTRL_MT7621
|
||||
+ bool "MediaTek MT7621 pin control driver"
|
||||
+ select PINCTRL_MTMIPS
|
||||
+ depends on SOC_MT7621 && PINCTRL_GENERIC
|
||||
+ help
|
||||
+ Support pin multiplexing control on MediaTek MT7621.
|
||||
+ The driver is controlled by a device tree node which contains
|
||||
+ the pin mux functions for each available pin groups.
|
||||
+
|
||||
config PINCTRL_MT7628
|
||||
bool "MediaTek MT7628 pin control driver"
|
||||
select PINCTRL_MTMIPS
|
||||
--- a/drivers/pinctrl/mtmips/Makefile
|
||||
+++ b/drivers/pinctrl/mtmips/Makefile
|
||||
@@ -5,4 +5,5 @@ obj-$(CONFIG_PINCTRL_MTMIPS) += pinctrl-
|
||||
|
||||
# SoC Drivers
|
||||
obj-$(CONFIG_PINCTRL_MT7620) += pinctrl-mt7620.o
|
||||
+obj-$(CONFIG_PINCTRL_MT7621) += pinctrl-mt7621.o
|
||||
obj-$(CONFIG_PINCTRL_MT7628) += pinctrl-mt7628.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/pinctrl/mtmips/pinctrl-mt7621.c
|
||||
@@ -0,0 +1,306 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#include <dm.h>
|
||||
+#include <dm/pinctrl.h>
|
||||
+#include <dm/device_compat.h>
|
||||
+#include <linux/bitops.h>
|
||||
+#include <linux/io.h>
|
||||
+
|
||||
+#include "pinctrl-mtmips-common.h"
|
||||
+
|
||||
+#define SYSC_MAP_SIZE 0x100
|
||||
+
|
||||
+#define PAD_UART1_GPIO0_OFS 0x00
|
||||
+#define PAD_UART3_I2C_OFS 0x04
|
||||
+#define PAD_UART2_JTAG_OFS 0x08
|
||||
+#define PAD_PERST_WDT_OFS 0x0c
|
||||
+#define PAD_RGMII2_MDIO_OFS 0x10
|
||||
+#define PAD_SDXC_SPI_OFS 0x14
|
||||
+#define GPIOMODE_OFS 0x18
|
||||
+#define PAD_BOPT_ESWINT_OFS 0x28
|
||||
+
|
||||
+#define ESWINT_SHIFT 20
|
||||
+#define SDXC_SHIFT 18
|
||||
+#define SPI_SHIFT 16
|
||||
+#define RGMII2_SHIFT 15
|
||||
+#define RGMII1_SHIFT 14
|
||||
+#define MDIO_SHIFT 12
|
||||
+#define PERST_SHIFT 10
|
||||
+#define WDT_SHIFT 8
|
||||
+#define JTAG_SHIFT 7
|
||||
+#define UART2_SHIFT 5
|
||||
+#define UART3_SHIFT 3
|
||||
+#define I2C_SHIFT 2
|
||||
+#define UART1_SHIFT 1
|
||||
+#define GPIO0_SHIFT 0 /* Dummy */
|
||||
+
|
||||
+#define GM4_MASK 3
|
||||
+
|
||||
+#define E4_E2_M 0x03
|
||||
+#define E4_E2_S 4
|
||||
+#define PULL_UP BIT(3)
|
||||
+#define PULL_DOWN BIT(2)
|
||||
+#define SMT BIT(1)
|
||||
+#define SR BIT(0)
|
||||
+
|
||||
+struct mt7621_pinctrl_priv {
|
||||
+ struct mtmips_pinctrl_priv mp;
|
||||
+};
|
||||
+
|
||||
+#if CONFIG_IS_ENABLED(PINMUX)
|
||||
+static const struct mtmips_pmx_func esw_int_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("esw int", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func sdxc_grp[] = {
|
||||
+ FUNC("nand", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("sdxc", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func spi_grp[] = {
|
||||
+ FUNC("nand", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("spi", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func rgmii2_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("rgmii", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func rgmii1_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("rgmii", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func mdio_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("mdio", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func perst_grp[] = {
|
||||
+ FUNC("refclk", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("pcie reset", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func wdt_grp[] = {
|
||||
+ FUNC("refclk", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("wdt rst", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func jtag_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("jtag", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func uart2_grp[] = {
|
||||
+ FUNC("spdif", 3),
|
||||
+ FUNC("pcm", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("uart", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func uart3_grp[] = {
|
||||
+ FUNC("spdif", 3),
|
||||
+ FUNC("i2s", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("uart", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func i2c_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("i2c", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func uart1_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("uart", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func gpio0_grp[] = {
|
||||
+ FUNC("gpio", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_group mt7621_pmx_data[] = {
|
||||
+ GRP_PCONF("esw int", esw_int_grp, GPIOMODE_OFS, ESWINT_SHIFT, 1,
|
||||
+ PAD_BOPT_ESWINT_OFS, 0),
|
||||
+ GRP_PCONF("sdxc", sdxc_grp, GPIOMODE_OFS, SDXC_SHIFT, GM4_MASK,
|
||||
+ PAD_SDXC_SPI_OFS, 16),
|
||||
+ GRP_PCONF("spi", spi_grp, GPIOMODE_OFS, SPI_SHIFT, GM4_MASK,
|
||||
+ PAD_SDXC_SPI_OFS, 0),
|
||||
+ GRP_PCONF("rgmii2", rgmii2_grp, GPIOMODE_OFS, RGMII2_SHIFT, 1,
|
||||
+ PAD_RGMII2_MDIO_OFS, 16),
|
||||
+ GRP("rgmii1", rgmii1_grp, GPIOMODE_OFS, RGMII1_SHIFT, 1),
|
||||
+ GRP_PCONF("mdio", mdio_grp, GPIOMODE_OFS, MDIO_SHIFT, GM4_MASK,
|
||||
+ PAD_RGMII2_MDIO_OFS, 0),
|
||||
+ GRP_PCONF("pcie reset", perst_grp, GPIOMODE_OFS, PERST_SHIFT, GM4_MASK,
|
||||
+ PAD_PERST_WDT_OFS, 16),
|
||||
+ GRP_PCONF("wdt", wdt_grp, GPIOMODE_OFS, WDT_SHIFT, GM4_MASK,
|
||||
+ PAD_PERST_WDT_OFS, 0),
|
||||
+ GRP_PCONF("jtag", jtag_grp, GPIOMODE_OFS, JTAG_SHIFT, 1,
|
||||
+ PAD_UART2_JTAG_OFS, 16),
|
||||
+ GRP_PCONF("uart2", uart2_grp, GPIOMODE_OFS, UART2_SHIFT, GM4_MASK,
|
||||
+ PAD_UART2_JTAG_OFS, 0),
|
||||
+ GRP_PCONF("uart3", uart3_grp, GPIOMODE_OFS, UART3_SHIFT, GM4_MASK,
|
||||
+ PAD_UART3_I2C_OFS, 16),
|
||||
+ GRP_PCONF("i2c", i2c_grp, GPIOMODE_OFS, I2C_SHIFT, 1,
|
||||
+ PAD_UART3_I2C_OFS, 0),
|
||||
+ GRP_PCONF("uart1", uart1_grp, GPIOMODE_OFS, UART1_SHIFT, 1,
|
||||
+ PAD_UART1_GPIO0_OFS, 16),
|
||||
+ GRP_PCONF("gpio0", gpio0_grp, GPIOMODE_OFS, GPIO0_SHIFT, 1,
|
||||
+ PAD_UART1_GPIO0_OFS, 0),
|
||||
+};
|
||||
+
|
||||
+static int mt7621_get_groups_count(struct udevice *dev)
|
||||
+{
|
||||
+ return ARRAY_SIZE(mt7621_pmx_data);
|
||||
+}
|
||||
+
|
||||
+static const char *mt7621_get_group_name(struct udevice *dev,
|
||||
+ unsigned int selector)
|
||||
+{
|
||||
+ return mt7621_pmx_data[selector].name;
|
||||
+}
|
||||
+#endif /* CONFIG_IS_ENABLED(PINMUX) */
|
||||
+
|
||||
+#if CONFIG_IS_ENABLED(PINCONF)
|
||||
+static const struct pinconf_param mt7621_conf_params[] = {
|
||||
+ { "bias-disable", PIN_CONFIG_BIAS_DISABLE, 0 },
|
||||
+ { "bias-pull-up", PIN_CONFIG_BIAS_PULL_UP, 1 },
|
||||
+ { "bias-pull-down", PIN_CONFIG_BIAS_PULL_DOWN, 1 },
|
||||
+ { "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 },
|
||||
+ { "input-schmitt-disable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 0 },
|
||||
+ { "drive-strength", PIN_CONFIG_DRIVE_STRENGTH, 0 },
|
||||
+ { "slew-rate", PIN_CONFIG_SLEW_RATE, 0 },
|
||||
+};
|
||||
+
|
||||
+static const u32 mt7621_pconf_drv_strength_tbl[] = {2, 4, 6, 8};
|
||||
+
|
||||
+static int mt7621_pinconf_group_set(struct udevice *dev,
|
||||
+ unsigned int group_selector,
|
||||
+ unsigned int param, unsigned int arg)
|
||||
+{
|
||||
+ struct mt7621_pinctrl_priv *priv = dev_get_priv(dev);
|
||||
+ const struct mtmips_pmx_group *grp = &mt7621_pmx_data[group_selector];
|
||||
+ u32 clr = 0, set = 0;
|
||||
+ int i;
|
||||
+
|
||||
+ if (!grp->pconf_avail)
|
||||
+ return 0;
|
||||
+
|
||||
+ switch (param) {
|
||||
+ case PIN_CONFIG_BIAS_DISABLE:
|
||||
+ clr = PULL_UP | PULL_DOWN;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_BIAS_PULL_UP:
|
||||
+ clr = PULL_DOWN;
|
||||
+ set = PULL_UP;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_BIAS_PULL_DOWN:
|
||||
+ clr = PULL_UP;
|
||||
+ set = PULL_DOWN;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
|
||||
+ if (arg)
|
||||
+ set = SMT;
|
||||
+ else
|
||||
+ clr = SMT;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_DRIVE_STRENGTH:
|
||||
+ for (i = 0; i < ARRAY_SIZE(mt7621_pconf_drv_strength_tbl); i++)
|
||||
+ if (mt7621_pconf_drv_strength_tbl[i] == arg)
|
||||
+ break;
|
||||
+
|
||||
+ if (i >= ARRAY_SIZE(mt7621_pconf_drv_strength_tbl))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ clr = E4_E2_M << E4_E2_S;
|
||||
+ set = i << E4_E2_S;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_SLEW_RATE:
|
||||
+ if (arg)
|
||||
+ set = SR;
|
||||
+ else
|
||||
+ clr = SR;
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ mtmips_pinctrl_reg_set(&priv->mp, grp->pconf_reg, grp->pconf_shift,
|
||||
+ clr, set);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+static int mt7621_pinctrl_probe(struct udevice *dev)
|
||||
+{
|
||||
+ struct mt7621_pinctrl_priv *priv = dev_get_priv(dev);
|
||||
+ int ret = 0;
|
||||
+
|
||||
+#if CONFIG_IS_ENABLED(PINMUX)
|
||||
+ ret = mtmips_pinctrl_probe(&priv->mp, ARRAY_SIZE(mt7621_pmx_data),
|
||||
+ mt7621_pmx_data);
|
||||
+#endif /* CONFIG_IS_ENABLED(PINMUX) */
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int mt7621_pinctrl_of_to_plat(struct udevice *dev)
|
||||
+{
|
||||
+ struct mt7621_pinctrl_priv *priv = dev_get_priv(dev);
|
||||
+
|
||||
+ priv->mp.base = (void __iomem *)dev_remap_addr_index(dev, 0);
|
||||
+
|
||||
+ if (!priv->mp.base)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct pinctrl_ops mt7621_pinctrl_ops = {
|
||||
+#if CONFIG_IS_ENABLED(PINMUX)
|
||||
+ .get_groups_count = mt7621_get_groups_count,
|
||||
+ .get_group_name = mt7621_get_group_name,
|
||||
+ .get_functions_count = mtmips_get_functions_count,
|
||||
+ .get_function_name = mtmips_get_function_name,
|
||||
+ .pinmux_group_set = mtmips_pinmux_group_set,
|
||||
+#endif /* CONFIG_IS_ENABLED(PINMUX) */
|
||||
+#if CONFIG_IS_ENABLED(PINCONF)
|
||||
+ .pinconf_num_params = ARRAY_SIZE(mt7621_conf_params),
|
||||
+ .pinconf_params = mt7621_conf_params,
|
||||
+ .pinconf_group_set = mt7621_pinconf_group_set,
|
||||
+#endif /* CONFIG_IS_ENABLED(PINCONF) */
|
||||
+ .set_state = pinctrl_generic_set_state,
|
||||
+};
|
||||
+
|
||||
+static const struct udevice_id mt7621_pinctrl_ids[] = {
|
||||
+ { .compatible = "mediatek,mt7621-pinctrl" },
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
+U_BOOT_DRIVER(mt7621_pinctrl) = {
|
||||
+ .name = "mt7621-pinctrl",
|
||||
+ .id = UCLASS_PINCTRL,
|
||||
+ .of_match = mt7621_pinctrl_ids,
|
||||
+ .of_to_plat = mt7621_pinctrl_of_to_plat,
|
||||
+ .ops = &mt7621_pinctrl_ops,
|
||||
+ .probe = mt7621_pinctrl_probe,
|
||||
+ .priv_auto = sizeof(struct mt7621_pinctrl_priv),
|
||||
+};
|
||||
--- a/drivers/pinctrl/mtmips/pinctrl-mtmips-common.c
|
||||
+++ b/drivers/pinctrl/mtmips/pinctrl-mtmips-common.c
|
||||
@@ -13,8 +13,8 @@
|
||||
|
||||
#include "pinctrl-mtmips-common.h"
|
||||
|
||||
-static void mtmips_pinctrl_reg_set(struct mtmips_pinctrl_priv *priv,
|
||||
- u32 reg, u32 shift, u32 mask, u32 value)
|
||||
+void mtmips_pinctrl_reg_set(struct mtmips_pinctrl_priv *priv,
|
||||
+ u32 reg, u32 shift, u32 mask, u32 value)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
--- a/drivers/pinctrl/mtmips/pinctrl-mtmips-common.h
|
||||
+++ b/drivers/pinctrl/mtmips/pinctrl-mtmips-common.h
|
||||
@@ -22,6 +22,10 @@ struct mtmips_pmx_group {
|
||||
u32 shift;
|
||||
char mask;
|
||||
|
||||
+ int pconf_avail;
|
||||
+ u32 pconf_reg;
|
||||
+ u32 pconf_shift;
|
||||
+
|
||||
int nfuncs;
|
||||
const struct mtmips_pmx_func *funcs;
|
||||
};
|
||||
@@ -42,6 +46,14 @@ struct mtmips_pinctrl_priv {
|
||||
{ .name = (_name), .reg = (_reg), .shift = (_shift), .mask = (_mask), \
|
||||
.funcs = (_funcs), .nfuncs = ARRAY_SIZE(_funcs) }
|
||||
|
||||
+#define GRP_PCONF(_name, _funcs, _reg, _shift, _mask, _pconf_reg, _pconf_shift) \
|
||||
+ { .name = (_name), .reg = (_reg), .shift = (_shift), .mask = (_mask), \
|
||||
+ .funcs = (_funcs), .nfuncs = ARRAY_SIZE(_funcs), .pconf_avail = 1, \
|
||||
+ .pconf_reg = (_pconf_reg), .pconf_shift = (_pconf_shift) }
|
||||
+
|
||||
+void mtmips_pinctrl_reg_set(struct mtmips_pinctrl_priv *priv,
|
||||
+ u32 reg, u32 shift, u32 mask, u32 value);
|
||||
+
|
||||
int mtmips_get_functions_count(struct udevice *dev);
|
||||
const char *mtmips_get_function_name(struct udevice *dev,
|
||||
unsigned int selector);
|
||||
@ -0,0 +1,23 @@
|
||||
From ab59bb14a0efd40c12a967f73bd08ba2f27da3be Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:56 +0800
|
||||
Subject: [PATCH 11/25] usb: xhci-mtk: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes xhci-mtk driver available for MediaTek MT7621 SoC
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/usb/host/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/usb/host/Kconfig
|
||||
+++ b/drivers/usb/host/Kconfig
|
||||
@@ -34,7 +34,7 @@ config USB_XHCI_DWC3_OF_SIMPLE
|
||||
|
||||
config USB_XHCI_MTK
|
||||
bool "Support for MediaTek on-chip xHCI USB controller"
|
||||
- depends on ARCH_MEDIATEK
|
||||
+ depends on ARCH_MEDIATEK || SOC_MT7621
|
||||
help
|
||||
Enables support for the on-chip xHCI controller on MediaTek SoCs.
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
From 23c19fa476929b6e94cc7f1a55f5ed4d3ab03934 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:01 +0800
|
||||
Subject: [PATCH 12/25] phy: mtk-tphy: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes mtk-tphy driver available for MediaTek MT7621 SoC
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/phy/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/phy/Kconfig
|
||||
+++ b/drivers/phy/Kconfig
|
||||
@@ -266,7 +266,7 @@ config MT76X8_USB_PHY
|
||||
config PHY_MTK_TPHY
|
||||
bool "MediaTek T-PHY Driver"
|
||||
depends on PHY
|
||||
- depends on ARCH_MEDIATEK
|
||||
+ depends on ARCH_MEDIATEK || SOC_MT7621
|
||||
help
|
||||
MediaTek T-PHY driver supports usb2.0, usb3.0 ports, PCIe and
|
||||
SATA, and meanwhile supports two version T-PHY which have
|
||||
@ -0,0 +1,23 @@
|
||||
From 34b623ccfd135e846b8464729a8b0e8df4b77a66 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:08 +0800
|
||||
Subject: [PATCH 13/25] spi: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes mt7621_spi driver available for MediaTek MT7621 SoC
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/spi/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/spi/Kconfig
|
||||
+++ b/drivers/spi/Kconfig
|
||||
@@ -240,7 +240,7 @@ config MT7620_SPI
|
||||
|
||||
config MT7621_SPI
|
||||
bool "MediaTek MT7621 SPI driver"
|
||||
- depends on SOC_MT7628
|
||||
+ depends on SOC_MT7621 || SOC_MT7628
|
||||
help
|
||||
Enable the MT7621 SPI driver. This driver can be used to access
|
||||
the SPI NOR flash on platforms embedding this Ralink / MediaTek
|
||||
@ -0,0 +1,24 @@
|
||||
From f265423a441a3bcb51e25238544adb69f74becc7 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:14 +0800
|
||||
Subject: [PATCH 14/25] gpio: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes mt7621_gpio driver available for MediaTek MT7621 SoC
|
||||
|
||||
Reviewed-by: Stefan Roese <sr@denx.de>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/gpio/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/gpio/Kconfig
|
||||
+++ b/drivers/gpio/Kconfig
|
||||
@@ -553,7 +553,7 @@ config MT7620_GPIO
|
||||
|
||||
config MT7621_GPIO
|
||||
bool "MediaTek MT7621 GPIO driver"
|
||||
- depends on DM_GPIO && SOC_MT7628
|
||||
+ depends on DM_GPIO && (SOC_MT7621 || SOC_MT7628)
|
||||
default y
|
||||
help
|
||||
Say yes here to support MediaTek MT7621 compatible GPIOs.
|
||||
@ -0,0 +1,24 @@
|
||||
From eb1806fbf65c60b2ce462a0ebe39d9f9e652235a Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:19 +0800
|
||||
Subject: [PATCH 15/25] watchdog: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes mt7621_wdt driver available for MediaTek MT7621 SoC
|
||||
|
||||
Reviewed-by: Stefan Roese <sr@denx.de>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/watchdog/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/watchdog/Kconfig
|
||||
+++ b/drivers/watchdog/Kconfig
|
||||
@@ -191,7 +191,7 @@ config WDT_MT7620
|
||||
|
||||
config WDT_MT7621
|
||||
bool "MediaTek MT7621 watchdog timer support"
|
||||
- depends on WDT && SOC_MT7628
|
||||
+ depends on WDT && (SOC_MT7621 || SOC_MT7628)
|
||||
help
|
||||
Select this to enable Ralink / Mediatek watchdog timer,
|
||||
which can be found on some MediaTek chips.
|
||||
@ -0,0 +1,42 @@
|
||||
From 4339ec44313e85dd1f6d3d708dd2e594855ce25d Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:26 +0800
|
||||
Subject: [PATCH 16/25] mmc: mediatek: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch adds SDXC support for MediaTek MT7621 SoC
|
||||
|
||||
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/mmc/mtk-sd.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
--- a/drivers/mmc/mtk-sd.c
|
||||
+++ b/drivers/mmc/mtk-sd.c
|
||||
@@ -1761,6 +1761,18 @@ static const struct msdc_compatible mt76
|
||||
.default_pad_dly = true,
|
||||
};
|
||||
|
||||
+static const struct msdc_compatible mt7621_compat = {
|
||||
+ .clk_div_bits = 8,
|
||||
+ .pad_tune0 = false,
|
||||
+ .async_fifo = true,
|
||||
+ .data_tune = true,
|
||||
+ .busy_check = false,
|
||||
+ .stop_clk_fix = false,
|
||||
+ .enhance_rx = false,
|
||||
+ .builtin_pad_ctrl = true,
|
||||
+ .default_pad_dly = true,
|
||||
+};
|
||||
+
|
||||
static const struct msdc_compatible mt7622_compat = {
|
||||
.clk_div_bits = 12,
|
||||
.pad_tune0 = true,
|
||||
@@ -1809,6 +1821,7 @@ static const struct msdc_compatible mt81
|
||||
|
||||
static const struct udevice_id msdc_ids[] = {
|
||||
{ .compatible = "mediatek,mt7620-mmc", .data = (ulong)&mt7620_compat },
|
||||
+ { .compatible = "mediatek,mt7621-mmc", .data = (ulong)&mt7621_compat },
|
||||
{ .compatible = "mediatek,mt7622-mmc", .data = (ulong)&mt7622_compat },
|
||||
{ .compatible = "mediatek,mt7623-mmc", .data = (ulong)&mt7623_compat },
|
||||
{ .compatible = "mediatek,mt8512-mmc", .data = (ulong)&mt8512_compat },
|
||||
@ -0,0 +1,33 @@
|
||||
From 391785398f61c85e6b55b1e9edbab94e3ba1b783 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:31 +0800
|
||||
Subject: [PATCH 17/25] net: mediatek: remap iobase address
|
||||
|
||||
The iobase address from dts node is actually physical address. It's
|
||||
identical to the virtual address in ARM platform. This is ok because this
|
||||
driver was used only by ARM platforms (mt7622/mt7623 ...).
|
||||
|
||||
But now this driver will be used by mt7621 which is a MIPS SoC. For MIPS
|
||||
platform the physical address space is mapped to KSEG0 and KSEG1 and this
|
||||
makes the virtual address apparently not idential to its physical address.
|
||||
|
||||
To solve this issue, this patch replaces dev_read_addr with dev_remap_addr
|
||||
to get the remapped iobase address.
|
||||
|
||||
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/net/mtk_eth.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/mtk_eth.c
|
||||
+++ b/drivers/net/mtk_eth.c
|
||||
@@ -1419,7 +1419,7 @@ static int mtk_eth_of_to_plat(struct ude
|
||||
|
||||
priv->soc = dev_get_driver_data(dev);
|
||||
|
||||
- pdata->iobase = dev_read_addr(dev);
|
||||
+ pdata->iobase = (phys_addr_t)dev_remap_addr(dev);
|
||||
|
||||
/* get corresponding ethsys phandle */
|
||||
ret = dev_read_phandle_with_args(dev, "mediatek,ethsys", NULL, 0, 0,
|
||||
@ -0,0 +1,67 @@
|
||||
From 955cc76d8074df943d59d559895007f91de8eed5 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:37 +0800
|
||||
Subject: [PATCH 18/25] net: mediatek: use regmap api to modify ethsys
|
||||
registers
|
||||
|
||||
The address returned by regmap_get_range() is not remapped. Directly r/w
|
||||
to this address is ok for ARM platforms since it's idential to the virtual
|
||||
address.
|
||||
|
||||
But for MIPS platform only virtual address should be used for access.
|
||||
To solve this issue, the regmap api regmap_read/regmap_write should be used
|
||||
since they will remap address before accessing.
|
||||
|
||||
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/net/mtk_eth.c | 22 +++++++++++-----------
|
||||
1 file changed, 11 insertions(+), 11 deletions(-)
|
||||
|
||||
--- a/drivers/net/mtk_eth.c
|
||||
+++ b/drivers/net/mtk_eth.c
|
||||
@@ -159,9 +159,10 @@ struct mtk_eth_priv {
|
||||
|
||||
void __iomem *fe_base;
|
||||
void __iomem *gmac_base;
|
||||
- void __iomem *ethsys_base;
|
||||
void __iomem *sgmii_base;
|
||||
|
||||
+ struct regmap *ethsys_regmap;
|
||||
+
|
||||
struct mii_dev *mdio_bus;
|
||||
int (*mii_read)(struct mtk_eth_priv *priv, u8 phy, u8 reg);
|
||||
int (*mii_write)(struct mtk_eth_priv *priv, u8 phy, u8 reg, u16 val);
|
||||
@@ -233,7 +234,12 @@ static void mtk_gmac_rmw(struct mtk_eth_
|
||||
static void mtk_ethsys_rmw(struct mtk_eth_priv *priv, u32 reg, u32 clr,
|
||||
u32 set)
|
||||
{
|
||||
- clrsetbits_le32(priv->ethsys_base + reg, clr, set);
|
||||
+ uint val;
|
||||
+
|
||||
+ regmap_read(priv->ethsys_regmap, reg, &val);
|
||||
+ val &= ~clr;
|
||||
+ val |= set;
|
||||
+ regmap_write(priv->ethsys_regmap, reg, val);
|
||||
}
|
||||
|
||||
/* Direct MDIO clause 22/45 access via SoC */
|
||||
@@ -1427,15 +1433,9 @@ static int mtk_eth_of_to_plat(struct ude
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- regmap = syscon_node_to_regmap(args.node);
|
||||
- if (IS_ERR(regmap))
|
||||
- return PTR_ERR(regmap);
|
||||
-
|
||||
- priv->ethsys_base = regmap_get_range(regmap, 0);
|
||||
- if (!priv->ethsys_base) {
|
||||
- dev_err(dev, "Unable to find ethsys\n");
|
||||
- return -ENODEV;
|
||||
- }
|
||||
+ priv->ethsys_regmap = syscon_node_to_regmap(args.node);
|
||||
+ if (IS_ERR(priv->ethsys_regmap))
|
||||
+ return PTR_ERR(priv->ethsys_regmap);
|
||||
|
||||
/* Reset controllers */
|
||||
ret = reset_get_by_name(dev, "fe", &priv->rst_fe);
|
||||
@ -0,0 +1,67 @@
|
||||
From 7237a6a0c020c05bb819774391154b40b2cfaabd Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:42 +0800
|
||||
Subject: [PATCH 19/25] net: mediatek: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch adds GMAC support for MediaTek MT7621 SoC.
|
||||
MT7621 has the same GMAC/Switch configuration as MT7623.
|
||||
|
||||
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/net/mtk_eth.c | 21 +++++++++++++++------
|
||||
1 file changed, 15 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/mtk_eth.c
|
||||
+++ b/drivers/net/mtk_eth.c
|
||||
@@ -145,7 +145,8 @@ enum mtk_switch {
|
||||
enum mtk_soc {
|
||||
SOC_MT7623,
|
||||
SOC_MT7629,
|
||||
- SOC_MT7622
|
||||
+ SOC_MT7622,
|
||||
+ SOC_MT7621
|
||||
};
|
||||
|
||||
struct mtk_eth_priv {
|
||||
@@ -675,12 +676,18 @@ static int mt7530_pad_clk_setup(struct m
|
||||
static int mt7530_setup(struct mtk_eth_priv *priv)
|
||||
{
|
||||
u16 phy_addr, phy_val;
|
||||
- u32 val;
|
||||
+ u32 val, txdrv;
|
||||
int i;
|
||||
|
||||
- /* Select 250MHz clk for RGMII mode */
|
||||
- mtk_ethsys_rmw(priv, ETHSYS_CLKCFG0_REG,
|
||||
- ETHSYS_TRGMII_CLK_SEL362_5, 0);
|
||||
+ if (priv->soc != SOC_MT7621) {
|
||||
+ /* Select 250MHz clk for RGMII mode */
|
||||
+ mtk_ethsys_rmw(priv, ETHSYS_CLKCFG0_REG,
|
||||
+ ETHSYS_TRGMII_CLK_SEL362_5, 0);
|
||||
+
|
||||
+ txdrv = 8;
|
||||
+ } else {
|
||||
+ txdrv = 4;
|
||||
+ }
|
||||
|
||||
/* Modify HWTRAP first to allow direct access to internal PHYs */
|
||||
mt753x_reg_read(priv, HWTRAP_REG, &val);
|
||||
@@ -738,7 +745,8 @@ static int mt7530_setup(struct mtk_eth_p
|
||||
/* Lower Tx Driving for TRGMII path */
|
||||
for (i = 0 ; i < NUM_TRGMII_CTRL ; i++)
|
||||
mt753x_reg_write(priv, MT7530_TRGMII_TD_ODT(i),
|
||||
- (8 << TD_DM_DRVP_S) | (8 << TD_DM_DRVN_S));
|
||||
+ (txdrv << TD_DM_DRVP_S) |
|
||||
+ (txdrv << TD_DM_DRVN_S));
|
||||
|
||||
for (i = 0 ; i < NUM_TRGMII_CTRL; i++)
|
||||
mt753x_reg_rmw(priv, MT7530_TRGMII_RD(i), RD_TAP_M, 16);
|
||||
@@ -1540,6 +1548,7 @@ static const struct udevice_id mtk_eth_i
|
||||
{ .compatible = "mediatek,mt7629-eth", .data = SOC_MT7629 },
|
||||
{ .compatible = "mediatek,mt7623-eth", .data = SOC_MT7623 },
|
||||
{ .compatible = "mediatek,mt7622-eth", .data = SOC_MT7622 },
|
||||
+ { .compatible = "mediatek,mt7621-eth", .data = SOC_MT7621 },
|
||||
{}
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,24 @@
|
||||
From 474082b03ae2b569f9daf43f78b91b57f7a1ae50 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:53 +0800
|
||||
Subject: [PATCH 21/25] spl: allow using nand base without standard nand driver
|
||||
|
||||
This patch removes the dependency to SPL_NAND_DRIVERS for SPL_NAND_BASE to
|
||||
allow minimal spl nand driver to use nand base for probing NAND chips.
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
common/spl/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/common/spl/Kconfig
|
||||
+++ b/common/spl/Kconfig
|
||||
@@ -764,7 +764,7 @@ config SPL_NAND_SIMPLE
|
||||
expose the cmd_ctrl() interface.
|
||||
|
||||
config SPL_NAND_BASE
|
||||
- depends on SPL_NAND_DRIVERS
|
||||
+ depends on SPL_NAND_SUPPORT
|
||||
bool "Use Base NAND Driver"
|
||||
help
|
||||
Include nand_base.c in the SPL.
|
||||
@ -0,0 +1,64 @@
|
||||
From ba9c81e720f39b5dbc14592252bfc9402afee79d Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:58 +0800
|
||||
Subject: [PATCH 22/25] spl: spl_legacy: fix the use of SPL_COPY_PAYLOAD_ONLY
|
||||
|
||||
If the payload is compressed, SPL_COPY_PAYLOAD_ONLY should always be set
|
||||
since the payload will not be directly read to its load address. The
|
||||
payload will first be read to a temporary buffer, and then be decompressed
|
||||
to its load address, without image header.
|
||||
|
||||
If the payload is not compressed, and SPL_COPY_PAYLOAD_ONLY is set, image
|
||||
header should be skipped on loading. Otherwise image header should also be
|
||||
read to its load address.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
common/spl/spl_legacy.c | 21 +++++++++++++++++++--
|
||||
1 file changed, 19 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/common/spl/spl_legacy.c
|
||||
+++ b/common/spl/spl_legacy.c
|
||||
@@ -88,15 +88,29 @@ int spl_load_legacy_img(struct spl_image
|
||||
/* Read header into local struct */
|
||||
load->read(load, header, sizeof(hdr), &hdr);
|
||||
|
||||
+ /*
|
||||
+ * If the payload is compressed, the decompressed data should be
|
||||
+ * directly write to its load address.
|
||||
+ */
|
||||
+ if (spl_image_get_comp(&hdr) != IH_COMP_NONE)
|
||||
+ spl_image->flags |= SPL_COPY_PAYLOAD_ONLY;
|
||||
+
|
||||
ret = spl_parse_image_header(spl_image, bootdev, &hdr);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- dataptr = header + sizeof(hdr);
|
||||
-
|
||||
/* Read image */
|
||||
switch (spl_image_get_comp(&hdr)) {
|
||||
case IH_COMP_NONE:
|
||||
+ dataptr = header;
|
||||
+
|
||||
+ /*
|
||||
+ * Image header will be skipped only if SPL_COPY_PAYLOAD_ONLY
|
||||
+ * is set
|
||||
+ */
|
||||
+ if (spl_image->flags & SPL_COPY_PAYLOAD_ONLY)
|
||||
+ dataptr += sizeof(hdr);
|
||||
+
|
||||
load->read(load, dataptr, spl_image->size,
|
||||
(void *)(unsigned long)spl_image->load_addr);
|
||||
break;
|
||||
@@ -104,6 +118,9 @@ int spl_load_legacy_img(struct spl_image
|
||||
case IH_COMP_LZMA:
|
||||
lzma_len = LZMA_LEN;
|
||||
|
||||
+ /* dataptr points to compressed payload */
|
||||
+ dataptr = header + sizeof(hdr);
|
||||
+
|
||||
debug("LZMA: Decompressing %08lx to %08lx\n",
|
||||
dataptr, spl_image->load_addr);
|
||||
src = malloc(spl_image->size);
|
||||
@ -0,0 +1,59 @@
|
||||
From b4e5137067d34a099efd921532ece177560789ca Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:24:04 +0800
|
||||
Subject: [PATCH 23/25] spl: nand: support loading legacy image with payload
|
||||
compressed
|
||||
|
||||
Add support to load legacy image with payload compressed. This redirects
|
||||
the boot flow for all legacy images. If the payload is not compressed, the
|
||||
actual behavior will remain unchanged.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
common/spl/spl_nand.c | 27 +++++++++++++++++++++++++++
|
||||
1 file changed, 27 insertions(+)
|
||||
|
||||
--- a/common/spl/spl_nand.c
|
||||
+++ b/common/spl/spl_nand.c
|
||||
@@ -56,6 +56,21 @@ static ulong spl_nand_fit_read(struct sp
|
||||
return size / load->bl_len;
|
||||
}
|
||||
|
||||
+static ulong spl_nand_legacy_read(struct spl_load_info *load, ulong offs,
|
||||
+ ulong size, void *dst)
|
||||
+{
|
||||
+ int err;
|
||||
+
|
||||
+ debug("%s: offs %lx, size %lx, dst %p\n",
|
||||
+ __func__, offs, size, dst);
|
||||
+
|
||||
+ err = nand_spl_load_image(offs, size, dst);
|
||||
+ if (err)
|
||||
+ return 0;
|
||||
+
|
||||
+ return size;
|
||||
+}
|
||||
+
|
||||
struct mtd_info * __weak nand_get_mtd(void)
|
||||
{
|
||||
return NULL;
|
||||
@@ -93,6 +108,18 @@ static int spl_nand_load_element(struct
|
||||
load.bl_len = bl_len;
|
||||
load.read = spl_nand_fit_read;
|
||||
return spl_load_imx_container(spl_image, &load, offset / bl_len);
|
||||
+ } else if (IS_ENABLED(CONFIG_SPL_LEGACY_IMAGE_FORMAT) &&
|
||||
+ image_get_magic(header) == IH_MAGIC) {
|
||||
+ struct spl_load_info load;
|
||||
+
|
||||
+ debug("Found legacy image\n");
|
||||
+ load.dev = NULL;
|
||||
+ load.priv = NULL;
|
||||
+ load.filename = NULL;
|
||||
+ load.bl_len = 1;
|
||||
+ load.read = spl_nand_legacy_read;
|
||||
+
|
||||
+ return spl_load_legacy_img(spl_image, bootdev, &load, offset);
|
||||
} else {
|
||||
err = spl_parse_image_header(spl_image, bootdev, header);
|
||||
if (err)
|
||||
@ -0,0 +1,333 @@
|
||||
From 18dd1ef9417d0880f2f492b55bd4d9ede499f137 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:24:10 +0800
|
||||
Subject: [PATCH 24/25] tools: mtk_image: add support for MT7621 NAND images
|
||||
|
||||
The BootROM of MT7621 requires a image header for SPL to record its size
|
||||
and load address when booting from NAND.
|
||||
|
||||
To create such an image, one can use the following command line:
|
||||
mkimage -T mtk_image -a 0x80200000 -e 0x80200000 -n "mt7621=1"
|
||||
-d u-boot-spl-ddr.bin u-boot-spl-ddr.img
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
tools/mtk_image.c | 182 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
tools/mtk_image.h | 24 ++++++
|
||||
2 files changed, 206 insertions(+)
|
||||
|
||||
--- a/tools/mtk_image.c
|
||||
+++ b/tools/mtk_image.c
|
||||
@@ -6,7 +6,9 @@
|
||||
* Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
*/
|
||||
|
||||
+#include <time.h>
|
||||
#include <image.h>
|
||||
+#include <u-boot/crc.h>
|
||||
#include <u-boot/sha256.h>
|
||||
#include "imagetool.h"
|
||||
#include "mtk_image.h"
|
||||
@@ -251,17 +253,45 @@ static uint32_t img_size;
|
||||
static enum brlyt_img_type hdr_media;
|
||||
static uint32_t hdr_offset;
|
||||
static int use_lk_hdr;
|
||||
+static int use_mt7621_hdr;
|
||||
static bool is_arm64_image;
|
||||
|
||||
/* LK image name */
|
||||
static char lk_name[32] = "U-Boot";
|
||||
|
||||
+/* CRC32 normal table required by MT7621 image */
|
||||
+static uint32_t crc32tbl[256];
|
||||
+
|
||||
/* NAND header selected by user */
|
||||
static const union nand_boot_header *hdr_nand;
|
||||
|
||||
/* GFH header + 2 * 4KB pages of NAND */
|
||||
static char hdr_tmp[sizeof(struct gfh_header) + 0x2000];
|
||||
|
||||
+static uint32_t crc32_normal_cal(uint32_t crc, const void *data, size_t length,
|
||||
+ const uint32_t *crc32c_table)
|
||||
+{
|
||||
+ const uint8_t *p = data;
|
||||
+
|
||||
+ while (length--)
|
||||
+ crc = crc32c_table[(uint8_t)((crc >> 24) ^ *p++)] ^ (crc << 8);
|
||||
+
|
||||
+ return crc;
|
||||
+}
|
||||
+
|
||||
+static void crc32_normal_init(uint32_t *crc32c_table, uint32_t poly)
|
||||
+{
|
||||
+ uint32_t v, i, j;
|
||||
+
|
||||
+ for (i = 0; i < 256; i++) {
|
||||
+ v = i << 24;
|
||||
+ for (j = 0; j < 8; j++)
|
||||
+ v = (v << 1) ^ ((v & (1 << 31)) ? poly : 0);
|
||||
+
|
||||
+ crc32c_table[i] = v;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static int mtk_image_check_image_types(uint8_t type)
|
||||
{
|
||||
if (type == IH_TYPE_MTKIMAGE)
|
||||
@@ -283,6 +313,7 @@ static int mtk_brom_parse_imagename(cons
|
||||
static const char *hdr_offs = "";
|
||||
static const char *nandinfo = "";
|
||||
static const char *lk = "";
|
||||
+ static const char *mt7621 = "";
|
||||
static const char *arm64_param = "";
|
||||
|
||||
key = buf;
|
||||
@@ -332,6 +363,9 @@ static int mtk_brom_parse_imagename(cons
|
||||
if (!strcmp(key, "lk"))
|
||||
lk = val;
|
||||
|
||||
+ if (!strcmp(key, "mt7621"))
|
||||
+ mt7621 = val;
|
||||
+
|
||||
if (!strcmp(key, "lkname"))
|
||||
snprintf(lk_name, sizeof(lk_name), "%s", val);
|
||||
|
||||
@@ -352,6 +386,13 @@ static int mtk_brom_parse_imagename(cons
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ /* if user specified MT7621 image header, skip following checks */
|
||||
+ if (mt7621 && mt7621[0] == '1') {
|
||||
+ use_mt7621_hdr = 1;
|
||||
+ free(buf);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
/* parse media type */
|
||||
for (i = 0; i < ARRAY_SIZE(brom_images); i++) {
|
||||
if (!strcmp(brom_images[i].name, media)) {
|
||||
@@ -419,6 +460,13 @@ static int mtk_image_vrec_header(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ if (use_mt7621_hdr) {
|
||||
+ tparams->header_size = image_get_header_size();
|
||||
+ tparams->hdr = &hdr_tmp;
|
||||
+ memset(&hdr_tmp, 0, tparams->header_size);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
if (hdr_media == BRLYT_TYPE_NAND || hdr_media == BRLYT_TYPE_SNAND)
|
||||
tparams->header_size = 2 * le16_to_cpu(hdr_nand->pagesize);
|
||||
else
|
||||
@@ -579,9 +627,90 @@ static int mtk_image_verify_nand_header(
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static uint32_t crc32be_cal(const void *data, size_t length)
|
||||
+{
|
||||
+ uint32_t crc = 0;
|
||||
+ uint8_t c;
|
||||
+
|
||||
+ if (crc32tbl[1] != MT7621_IH_CRC_POLYNOMIAL)
|
||||
+ crc32_normal_init(crc32tbl, MT7621_IH_CRC_POLYNOMIAL);
|
||||
+
|
||||
+ crc = crc32_normal_cal(crc, data, length, crc32tbl);
|
||||
+
|
||||
+ for (; length; length >>= 8) {
|
||||
+ c = length & 0xff;
|
||||
+ crc = crc32_normal_cal(crc, &c, 1, crc32tbl);
|
||||
+ }
|
||||
+
|
||||
+ return ~crc;
|
||||
+}
|
||||
+
|
||||
+static int mtk_image_verify_mt7621_header(const uint8_t *ptr, int print)
|
||||
+{
|
||||
+ const image_header_t *hdr = (const image_header_t *)ptr;
|
||||
+ struct mt7621_nand_header *nhdr;
|
||||
+ uint32_t spl_size, crcval;
|
||||
+ image_header_t header;
|
||||
+ int ret;
|
||||
+
|
||||
+ spl_size = image_get_size(hdr);
|
||||
+
|
||||
+ if (spl_size > img_size) {
|
||||
+ if (print)
|
||||
+ printf("Incomplete SPL image\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ ret = image_check_hcrc(hdr);
|
||||
+ if (!ret) {
|
||||
+ if (print)
|
||||
+ printf("Bad header CRC\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ ret = image_check_dcrc(hdr);
|
||||
+ if (!ret) {
|
||||
+ if (print)
|
||||
+ printf("Bad data CRC\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ /* Copy header so we can blank CRC field for re-calculation */
|
||||
+ memmove(&header, hdr, image_get_header_size());
|
||||
+ image_set_hcrc(&header, 0);
|
||||
+
|
||||
+ nhdr = (struct mt7621_nand_header *)header.ih_name;
|
||||
+ crcval = be32_to_cpu(nhdr->crc);
|
||||
+ nhdr->crc = 0;
|
||||
+
|
||||
+ if (crcval != crc32be_cal(&header, image_get_header_size())) {
|
||||
+ if (print)
|
||||
+ printf("Bad NAND header CRC\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (print) {
|
||||
+ printf("Load Address: %08x\n", image_get_load(hdr));
|
||||
+
|
||||
+ printf("Image Name: %.*s\n", MT7621_IH_NMLEN,
|
||||
+ image_get_name(hdr));
|
||||
+
|
||||
+ if (IMAGE_ENABLE_TIMESTAMP) {
|
||||
+ printf("Created: ");
|
||||
+ genimg_print_time((time_t)image_get_time(hdr));
|
||||
+ }
|
||||
+
|
||||
+ printf("Data Size: ");
|
||||
+ genimg_print_size(image_get_data_size(hdr));
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int mtk_image_verify_header(unsigned char *ptr, int image_size,
|
||||
struct image_tool_params *params)
|
||||
{
|
||||
+ image_header_t *hdr = (image_header_t *)ptr;
|
||||
union lk_hdr *lk = (union lk_hdr *)ptr;
|
||||
|
||||
/* nothing to verify for LK image header */
|
||||
@@ -590,6 +719,9 @@ static int mtk_image_verify_header(unsig
|
||||
|
||||
img_size = image_size;
|
||||
|
||||
+ if (image_get_magic(hdr) == IH_MAGIC)
|
||||
+ return mtk_image_verify_mt7621_header(ptr, 0);
|
||||
+
|
||||
if (!strcmp((char *)ptr, NAND_BOOT_NAME))
|
||||
return mtk_image_verify_nand_header(ptr, 0);
|
||||
else
|
||||
@@ -600,6 +732,7 @@ static int mtk_image_verify_header(unsig
|
||||
|
||||
static void mtk_image_print_header(const void *ptr)
|
||||
{
|
||||
+ image_header_t *hdr = (image_header_t *)ptr;
|
||||
union lk_hdr *lk = (union lk_hdr *)ptr;
|
||||
|
||||
if (le32_to_cpu(lk->magic) == LK_PART_MAGIC) {
|
||||
@@ -610,6 +743,11 @@ static void mtk_image_print_header(const
|
||||
|
||||
printf("Image Type: MediaTek BootROM Loadable Image\n");
|
||||
|
||||
+ if (image_get_magic(hdr) == IH_MAGIC) {
|
||||
+ mtk_image_verify_mt7621_header(ptr, 1);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (!strcmp((char *)ptr, NAND_BOOT_NAME))
|
||||
mtk_image_verify_nand_header(ptr, 1);
|
||||
else
|
||||
@@ -773,6 +911,45 @@ static void mtk_image_set_nand_header(vo
|
||||
filesize - 2 * le16_to_cpu(hdr_nand->pagesize) - SHA256_SUM_LEN);
|
||||
}
|
||||
|
||||
+static void mtk_image_set_mt7621_header(void *ptr, off_t filesize,
|
||||
+ uint32_t loadaddr)
|
||||
+{
|
||||
+ image_header_t *hdr = (image_header_t *)ptr;
|
||||
+ struct mt7621_stage1_header *shdr;
|
||||
+ struct mt7621_nand_header *nhdr;
|
||||
+ uint32_t datasize, crcval;
|
||||
+
|
||||
+ datasize = filesize - image_get_header_size();
|
||||
+ nhdr = (struct mt7621_nand_header *)hdr->ih_name;
|
||||
+ shdr = (struct mt7621_stage1_header *)(ptr + image_get_header_size());
|
||||
+
|
||||
+ shdr->ep = cpu_to_be32(loadaddr);
|
||||
+ shdr->stage_size = cpu_to_be32(datasize);
|
||||
+
|
||||
+ image_set_magic(hdr, IH_MAGIC);
|
||||
+ image_set_time(hdr, time(NULL));
|
||||
+ image_set_size(hdr, datasize);
|
||||
+ image_set_load(hdr, loadaddr);
|
||||
+ image_set_ep(hdr, loadaddr);
|
||||
+ image_set_os(hdr, IH_OS_U_BOOT);
|
||||
+ image_set_arch(hdr, IH_ARCH_MIPS);
|
||||
+ image_set_type(hdr, IH_TYPE_STANDALONE);
|
||||
+ image_set_comp(hdr, IH_COMP_NONE);
|
||||
+
|
||||
+ crcval = crc32(0, (uint8_t *)shdr, datasize);
|
||||
+ image_set_dcrc(hdr, crcval);
|
||||
+
|
||||
+ strncpy(nhdr->ih_name, "MT7621 NAND", MT7621_IH_NMLEN);
|
||||
+
|
||||
+ nhdr->ih_stage_offset = cpu_to_be32(image_get_header_size());
|
||||
+
|
||||
+ crcval = crc32be_cal(hdr, image_get_header_size());
|
||||
+ nhdr->crc = cpu_to_be32(crcval);
|
||||
+
|
||||
+ crcval = crc32(0, (uint8_t *)hdr, image_get_header_size());
|
||||
+ image_set_hcrc(hdr, crcval);
|
||||
+}
|
||||
+
|
||||
static void mtk_image_set_header(void *ptr, struct stat *sbuf, int ifd,
|
||||
struct image_tool_params *params)
|
||||
{
|
||||
@@ -791,6 +968,11 @@ static void mtk_image_set_header(void *p
|
||||
img_gen = true;
|
||||
img_size = sbuf->st_size;
|
||||
|
||||
+ if (use_mt7621_hdr) {
|
||||
+ mtk_image_set_mt7621_header(ptr, sbuf->st_size, params->addr);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (hdr_media == BRLYT_TYPE_NAND || hdr_media == BRLYT_TYPE_SNAND)
|
||||
mtk_image_set_nand_header(ptr, sbuf->st_size, params->addr);
|
||||
else
|
||||
--- a/tools/mtk_image.h
|
||||
+++ b/tools/mtk_image.h
|
||||
@@ -200,4 +200,28 @@ union lk_hdr {
|
||||
|
||||
#define LK_PART_MAGIC 0x58881688
|
||||
|
||||
+/* MT7621 NAND SPL image header */
|
||||
+
|
||||
+#define MT7621_IH_NMLEN 12
|
||||
+#define MT7621_IH_CRC_POLYNOMIAL 0x04c11db7
|
||||
+
|
||||
+struct mt7621_nand_header {
|
||||
+ char ih_name[MT7621_IH_NMLEN];
|
||||
+ uint32_t nand_ac_timing;
|
||||
+ uint32_t ih_stage_offset;
|
||||
+ uint32_t ih_bootloader_offset;
|
||||
+ uint32_t nand_info_1_data;
|
||||
+ uint32_t crc;
|
||||
+};
|
||||
+
|
||||
+struct mt7621_stage1_header {
|
||||
+ uint32_t jump_insn[2];
|
||||
+ uint32_t ep;
|
||||
+ uint32_t stage_size;
|
||||
+ uint32_t has_stage2;
|
||||
+ uint32_t next_ep;
|
||||
+ uint32_t next_size;
|
||||
+ uint32_t next_offset;
|
||||
+};
|
||||
+
|
||||
#endif /* _MTK_IMAGE_H */
|
||||
@ -0,0 +1,39 @@
|
||||
From e5fc4022af3cfd59e3459276305671a595ac5ff0 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:24:16 +0800
|
||||
Subject: [PATCH 25/25] MAINTAINERS: update maintainer for MediaTek MIPS
|
||||
platform
|
||||
|
||||
Update maintainer for MediaTek MIPS platform
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
MAINTAINERS | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -1007,15 +1007,23 @@ R: GSS_MTK_Uboot_upstream <GSS_MTK_Uboot
|
||||
S: Maintained
|
||||
F: arch/mips/mach-mtmips/
|
||||
F: arch/mips/dts/mt7620.dtsi
|
||||
+F: arch/mips/dts/mt7621.dtsi
|
||||
F: arch/mips/dts/mt7620-u-boot.dtsi
|
||||
+F: arch/mips/dts/mt7621-u-boot.dtsi
|
||||
F: include/configs/mt7620.h
|
||||
+F: include/configs/mt7621.h
|
||||
F: include/dt-bindings/clock/mt7620-clk.h
|
||||
+F: include/dt-bindings/clock/mt7621-clk.h
|
||||
F: include/dt-bindings/clock/mt7628-clk.h
|
||||
F: include/dt-bindings/reset/mt7620-reset.h
|
||||
+F: include/dt-bindings/reset/mt7621-reset.h
|
||||
F: include/dt-bindings/reset/mt7628-reset.h
|
||||
F: drivers/clk/mtmips/
|
||||
F: drivers/pinctrl/mtmips/
|
||||
F: drivers/gpio/mt7620_gpio.c
|
||||
+F: drivers/mtd/nand/raw/mt7621_nand.c
|
||||
+F: drivers/mtd/nand/raw/mt7621_nand.h
|
||||
+F: drivers/mtd/nand/raw/mt7621_nand_spl.c
|
||||
F: drivers/net/mt7620-eth.c
|
||||
F: drivers/phy/mt7620-usb-phy.c
|
||||
F: drivers/reset/reset-mtmips.c
|
||||
@ -1,24 +0,0 @@
|
||||
From 12de602dc824bcb821287500fba831225cff5392 Mon Sep 17 00:00:00 2001
|
||||
From: David Bauer <mail@david-bauer.net>
|
||||
Date: Mon, 13 Jul 2020 23:37:37 +0200
|
||||
Subject: [PATCH 11/12] scripts: remove dependency on swig
|
||||
|
||||
Don't build the libfdt tool, as it has a dependency on swig (which
|
||||
OpenWrt does not ship).
|
||||
|
||||
This requires more hacks, as of-platdata generation does not work
|
||||
without it.
|
||||
|
||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
---
|
||||
scripts/dtc/Makefile | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/scripts/dtc/Makefile
|
||||
+++ b/scripts/dtc/Makefile
|
||||
@@ -18,5 +18,3 @@ HOSTCFLAGS_dtc-parser.tab.o := -I$(src)
|
||||
# dependencies on generated files need to be listed explicitly
|
||||
$(obj)/dtc-lexer.lex.o: $(obj)/dtc-parser.tab.h
|
||||
|
||||
-# Added for U-Boot
|
||||
-subdir-$(CONFIG_PYLIBFDT) += pylibfdt
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/tools/Makefile
|
||||
+++ b/tools/Makefile
|
||||
@@ -119,7 +119,6 @@ dumpimage-mkimage-objs := aisimage.o \
|
||||
@@ -120,7 +120,6 @@ dumpimage-mkimage-objs := aisimage.o \
|
||||
imximage.o \
|
||||
imx8image.o \
|
||||
imx8mimage.o \
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1045,7 +1045,7 @@ quiet_cmd_pad_cat = CAT $@
|
||||
@@ -1061,7 +1061,7 @@ quiet_cmd_pad_cat = CAT $@
|
||||
cmd_pad_cat = $(cmd_objcopy) && $(append) || { rm -f $@; false; }
|
||||
|
||||
quiet_cmd_lzma = LZMA $@
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
--- a/tools/image-host.c
|
||||
+++ b/tools/image-host.c
|
||||
@@ -1122,6 +1122,7 @@ static int fit_config_add_verification_d
|
||||
* 2) get public key (X509_get_pubkey)
|
||||
* 3) provide der format (d2i_RSAPublicKey)
|
||||
*/
|
||||
+#ifdef CONFIG_TOOLS_LIBCRYPTO
|
||||
static int read_pub_key(const char *keydir, const void *name,
|
||||
unsigned char **pubkey, int *pubkey_len)
|
||||
{
|
||||
@@ -1175,6 +1176,13 @@ err_cert:
|
||||
fclose(f);
|
||||
return ret;
|
||||
}
|
||||
+#else
|
||||
+static int read_pub_key(const char *keydir, const void *name,
|
||||
+ unsigned char **pubkey, int *pubkey_len)
|
||||
+{
|
||||
+ return -ENOSYS;
|
||||
+}
|
||||
+#endif
|
||||
|
||||
int fit_pre_load_data(const char *keydir, void *keydest, void *fit)
|
||||
{
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/cmd/bootm.c
|
||||
+++ b/cmd/bootm.c
|
||||
@@ -228,6 +228,65 @@ U_BOOT_CMD(
|
||||
@@ -257,6 +257,65 @@ U_BOOT_CMD(
|
||||
/* iminfo - print header info for a requested image */
|
||||
/*******************************************************************/
|
||||
#if defined(CONFIG_CMD_IMI)
|
||||
@ -68,7 +68,7 @@
|
||||
{
|
||||
--- a/boot/image-fit.c
|
||||
+++ b/boot/image-fit.c
|
||||
@@ -1993,6 +1993,51 @@ static const char *fit_get_image_type_pr
|
||||
@@ -1995,6 +1995,51 @@ static const char *fit_get_image_type_pr
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
int arch, int image_type, int bootstage_id,
|
||||
--- a/include/image.h
|
||||
+++ b/include/image.h
|
||||
@@ -952,6 +952,7 @@ int fit_parse_subimage(const char *spec,
|
||||
@@ -955,6 +955,7 @@ int fit_parse_subimage(const char *spec,
|
||||
ulong *addr, const char **image_name);
|
||||
|
||||
int fit_get_subimage_count(const void *fit, int images_noffset);
|
||||
|
||||
@ -12,7 +12,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/cmd/bootmenu.c
|
||||
+++ b/cmd/bootmenu.c
|
||||
@@ -11,6 +11,7 @@
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <menu.h>
|
||||
#include <watchdog.h>
|
||||
#include <malloc.h>
|
||||
@ -20,105 +20,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
@@ -38,6 +39,7 @@ struct bootmenu_data {
|
||||
int active; /* active menu entry */
|
||||
int count; /* total count of menu entries */
|
||||
struct bootmenu_entry *first; /* first menu entry */
|
||||
+ bool last_choiced;
|
||||
};
|
||||
|
||||
enum bootmenu_key {
|
||||
@@ -46,8 +48,27 @@ enum bootmenu_key {
|
||||
KEY_DOWN,
|
||||
KEY_SELECT,
|
||||
KEY_QUIT,
|
||||
+ KEY_CHOICE,
|
||||
};
|
||||
|
||||
+static const char choice_chars[] = {
|
||||
+ '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
||||
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
|
||||
+ 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
|
||||
+ 'u', 'v', 'w', 'x', 'y', 'z'
|
||||
+};
|
||||
+
|
||||
+static int find_choice(char choice)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(choice_chars); i++)
|
||||
+ if (tolower(choice) == choice_chars[i])
|
||||
+ return i;
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
static char *bootmenu_getoption(unsigned short int n)
|
||||
{
|
||||
char name[MAX_ENV_SIZE];
|
||||
@@ -82,7 +103,7 @@ static void bootmenu_print_entry(void *d
|
||||
}
|
||||
|
||||
static void bootmenu_autoboot_loop(struct bootmenu_data *menu,
|
||||
- enum bootmenu_key *key, int *esc)
|
||||
+ enum bootmenu_key *key, int *esc, int *choice)
|
||||
{
|
||||
int i, c;
|
||||
|
||||
@@ -115,6 +136,19 @@ static void bootmenu_autoboot_loop(struc
|
||||
break;
|
||||
default:
|
||||
*key = KEY_NONE;
|
||||
+ if (*esc)
|
||||
+ break;
|
||||
+
|
||||
+ *choice = find_choice(c);
|
||||
+ if ((*choice >= 0 &&
|
||||
+ *choice < menu->count - 1)) {
|
||||
+ *key = KEY_CHOICE;
|
||||
+ } else if (c == '0') {
|
||||
+ *choice = menu->count - 1;
|
||||
+ *key = KEY_CHOICE;
|
||||
+ } else {
|
||||
+ *key = KEY_NONE;
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -136,10 +170,16 @@ static void bootmenu_autoboot_loop(struc
|
||||
}
|
||||
|
||||
static void bootmenu_loop(struct bootmenu_data *menu,
|
||||
- enum bootmenu_key *key, int *esc)
|
||||
+ enum bootmenu_key *key, int *esc, int *choice)
|
||||
{
|
||||
int c;
|
||||
|
||||
+ if (menu->last_choiced) {
|
||||
+ menu->last_choiced = false;
|
||||
+ *key = KEY_SELECT;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (*esc == 1) {
|
||||
if (tstc()) {
|
||||
c = getchar();
|
||||
@@ -165,6 +205,14 @@ static void bootmenu_loop(struct bootmen
|
||||
if (c == '\e') {
|
||||
*esc = 1;
|
||||
*key = KEY_NONE;
|
||||
+ } else {
|
||||
+ *choice = find_choice(c);
|
||||
+ if ((*choice >= 0 && *choice < menu->count - 1)) {
|
||||
+ *key = KEY_CHOICE;
|
||||
+ } else if (c == '0') {
|
||||
+ *choice = menu->count - 1;
|
||||
+ *key = KEY_CHOICE;
|
||||
+ }
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
@@ -216,16 +264,17 @@ static char *bootmenu_choice_entry(void
|
||||
@@ -87,16 +88,17 @@ static char *bootmenu_choice_entry(void
|
||||
struct bootmenu_data *menu = data;
|
||||
struct bootmenu_entry *iter;
|
||||
enum bootmenu_key key = KEY_NONE;
|
||||
@ -138,7 +40,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
}
|
||||
|
||||
switch (key) {
|
||||
@@ -239,6 +288,12 @@ static char *bootmenu_choice_entry(void
|
||||
@@ -110,6 +112,12 @@ static char *bootmenu_choice_entry(void
|
||||
++menu->active;
|
||||
/* no menu key selected, regenerate menu */
|
||||
return NULL;
|
||||
@ -151,7 +53,28 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
case KEY_SELECT:
|
||||
iter = menu->first;
|
||||
for (i = 0; i < menu->active; ++i)
|
||||
@@ -294,6 +349,7 @@ static struct bootmenu_data *bootmenu_cr
|
||||
@@ -181,12 +189,19 @@ static int prepare_bootmenu_entry(struct
|
||||
if (!entry)
|
||||
return -ENOMEM;
|
||||
|
||||
- entry->title = strndup(option, sep - option);
|
||||
+ entry->title = malloc((sep - option) + 4);
|
||||
if (!entry->title) {
|
||||
free(entry);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
+ if (i < ARRAY_SIZE(choice_chars)) {
|
||||
+ sprintf(entry->title, "%c. %.*s", choice_chars[i],
|
||||
+ (int)(sep - option), option);
|
||||
+ } else {
|
||||
+ sprintf(entry->title, " %.*s", (int)(sep - option), option);
|
||||
+ }
|
||||
+
|
||||
entry->command = strdup(sep + 1);
|
||||
if (!entry->command) {
|
||||
free(entry->title);
|
||||
@@ -331,6 +346,7 @@ static struct bootmenu_data *bootmenu_cr
|
||||
menu->delay = delay;
|
||||
menu->active = 0;
|
||||
menu->first = NULL;
|
||||
@ -159,34 +82,137 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
default_str = env_get("bootmenu_default");
|
||||
if (default_str)
|
||||
@@ -311,12 +367,19 @@ static struct bootmenu_data *bootmenu_cr
|
||||
goto cleanup;
|
||||
@@ -356,9 +372,9 @@ static struct bootmenu_data *bootmenu_cr
|
||||
|
||||
/* Add Quit entry if entering U-Boot console is disabled */
|
||||
if (!IS_ENABLED(CONFIG_BOOTMENU_DISABLE_UBOOT_CONSOLE))
|
||||
- entry->title = strdup("U-Boot console");
|
||||
+ entry->title = strdup("0. U-Boot console");
|
||||
else
|
||||
- entry->title = strdup("Quit");
|
||||
+ entry->title = strdup("0. Quit");
|
||||
|
||||
len = sep-option;
|
||||
- entry->title = malloc(len + 1);
|
||||
+ entry->title = malloc(len + 4);
|
||||
if (!entry->title) {
|
||||
free(entry);
|
||||
goto cleanup;
|
||||
}
|
||||
- memcpy(entry->title, option, len);
|
||||
--- a/common/menu.c
|
||||
+++ b/common/menu.c
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <cli.h>
|
||||
#include <malloc.h>
|
||||
#include <errno.h>
|
||||
+#include <linux/ctype.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/list.h>
|
||||
#include <watchdog.h>
|
||||
@@ -47,6 +48,17 @@ struct menu {
|
||||
int item_cnt;
|
||||
};
|
||||
|
||||
+static int find_choice(char choice)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ if (i < ARRAY_SIZE(choice_chars)) {
|
||||
+ len = sprintf(entry->title, "%c. %.*s", choice_chars[i],
|
||||
+ len, option);
|
||||
+ for (i = 0; i < ARRAY_SIZE(choice_chars); i++)
|
||||
+ if (tolower(choice) == choice_chars[i])
|
||||
+ return i;
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* An iterator function for menu items. callback will be called for each item
|
||||
* in m, with m, a pointer to the item, and extra being passed to callback. If
|
||||
@@ -426,7 +438,7 @@ int menu_destroy(struct menu *m)
|
||||
}
|
||||
|
||||
void bootmenu_autoboot_loop(struct bootmenu_data *menu,
|
||||
- enum bootmenu_key *key, int *esc)
|
||||
+ enum bootmenu_key *key, int *esc, int *choice)
|
||||
{
|
||||
int i, c;
|
||||
|
||||
@@ -456,6 +468,19 @@ void bootmenu_autoboot_loop(struct bootm
|
||||
break;
|
||||
default:
|
||||
*key = KEY_NONE;
|
||||
+ if (*esc)
|
||||
+ break;
|
||||
+
|
||||
+ *choice = find_choice(c);
|
||||
+ if ((*choice >= 0 &&
|
||||
+ *choice < menu->count - 1)) {
|
||||
+ *key = KEY_CHOICE;
|
||||
+ } else if (c == '0') {
|
||||
+ *choice = menu->count - 1;
|
||||
+ *key = KEY_CHOICE;
|
||||
+ } else {
|
||||
+ *key = KEY_NONE;
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -475,10 +500,16 @@ void bootmenu_autoboot_loop(struct bootm
|
||||
}
|
||||
|
||||
void bootmenu_loop(struct bootmenu_data *menu,
|
||||
- enum bootmenu_key *key, int *esc)
|
||||
+ enum bootmenu_key *key, int *esc, int *choice)
|
||||
{
|
||||
int c;
|
||||
|
||||
+ if (menu->last_choiced) {
|
||||
+ menu->last_choiced = false;
|
||||
+ *key = KEY_SELECT;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (*esc == 1) {
|
||||
if (tstc()) {
|
||||
c = getchar();
|
||||
@@ -504,6 +535,14 @@ void bootmenu_loop(struct bootmenu_data
|
||||
if (c == '\e') {
|
||||
*esc = 1;
|
||||
*key = KEY_NONE;
|
||||
+ } else {
|
||||
+ len = sprintf(entry->title, " %.*s", len, option);
|
||||
+ }
|
||||
+ *choice = find_choice(c);
|
||||
+ if ((*choice >= 0 && *choice < menu->count - 1)) {
|
||||
+ *key = KEY_CHOICE;
|
||||
+ } else if (c == '0') {
|
||||
+ *choice = menu->count - 1;
|
||||
+ *key = KEY_CHOICE;
|
||||
+ }
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
--- a/include/menu.h
|
||||
+++ b/include/menu.h
|
||||
@@ -40,6 +40,7 @@ struct bootmenu_data {
|
||||
int active; /* active menu entry */
|
||||
int count; /* total count of menu entries */
|
||||
struct bootmenu_entry *first; /* first menu entry */
|
||||
+ bool last_choiced;
|
||||
};
|
||||
|
||||
enum bootmenu_key {
|
||||
@@ -48,11 +49,19 @@ enum bootmenu_key {
|
||||
KEY_DOWN,
|
||||
KEY_SELECT,
|
||||
KEY_QUIT,
|
||||
+ KEY_CHOICE,
|
||||
};
|
||||
|
||||
void bootmenu_autoboot_loop(struct bootmenu_data *menu,
|
||||
- enum bootmenu_key *key, int *esc);
|
||||
+ enum bootmenu_key *key, int *esc, int *choice);
|
||||
void bootmenu_loop(struct bootmenu_data *menu,
|
||||
- enum bootmenu_key *key, int *esc);
|
||||
+ enum bootmenu_key *key, int *esc, int *choice);
|
||||
+
|
||||
entry->title[len] = 0;
|
||||
+static const char choice_chars[] = {
|
||||
+ '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
||||
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
|
||||
+ 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
|
||||
+ 'u', 'v', 'w', 'x', 'y', 'z'
|
||||
+};
|
||||
|
||||
len = strlen(sep + 1);
|
||||
@@ -353,7 +416,7 @@ static struct bootmenu_data *bootmenu_cr
|
||||
if (!entry)
|
||||
goto cleanup;
|
||||
|
||||
- entry->title = strdup("U-Boot console");
|
||||
+ entry->title = strdup("0. U-Boot console");
|
||||
if (!entry->title) {
|
||||
free(entry);
|
||||
goto cleanup;
|
||||
#endif /* __MENU_H__ */
|
||||
|
||||
@ -1,19 +1,10 @@
|
||||
--- a/cmd/bootmenu.c
|
||||
+++ b/cmd/bootmenu.c
|
||||
@@ -39,6 +39,7 @@ struct bootmenu_data {
|
||||
int active; /* active menu entry */
|
||||
int count; /* total count of menu entries */
|
||||
struct bootmenu_entry *first; /* first menu entry */
|
||||
+ char *mtitle; /* custom menu title */
|
||||
bool last_choiced;
|
||||
};
|
||||
|
||||
@@ -471,7 +472,12 @@ static void menu_display_statusline(stru
|
||||
@@ -431,7 +431,11 @@ static void menu_display_statusline(stru
|
||||
printf(ANSI_CURSOR_POSITION, 1, 1);
|
||||
puts(ANSI_CLEAR_LINE);
|
||||
printf(ANSI_CURSOR_POSITION, 2, 1);
|
||||
- puts(" *** U-Boot Boot Menu ***");
|
||||
+
|
||||
printf(ANSI_CURSOR_POSITION, 2, 3);
|
||||
- puts("*** U-Boot Boot Menu ***");
|
||||
+ if (menu->mtitle)
|
||||
+ puts(menu->mtitle);
|
||||
+ else
|
||||
@ -22,11 +13,21 @@
|
||||
puts(ANSI_CLEAR_LINE_TO_END);
|
||||
printf(ANSI_CURSOR_POSITION, 3, 1);
|
||||
puts(ANSI_CLEAR_LINE);
|
||||
@@ -525,6 +531,7 @@ static void bootmenu_show(int delay)
|
||||
return;
|
||||
@@ -516,6 +520,7 @@ static enum bootmenu_ret bootmenu_show(i
|
||||
return BOOTMENU_RET_FAIL;
|
||||
}
|
||||
|
||||
+ bootmenu->mtitle = env_get("bootmenu_title");
|
||||
for (iter = bootmenu->first; iter; iter = iter->next) {
|
||||
if (!menu_item_add(menu, iter->key, iter))
|
||||
if (menu_item_add(menu, iter->key, iter) != 1)
|
||||
goto cleanup;
|
||||
--- a/include/menu.h
|
||||
+++ b/include/menu.h
|
||||
@@ -40,6 +40,7 @@ struct bootmenu_data {
|
||||
int active; /* active menu entry */
|
||||
int count; /* total count of menu entries */
|
||||
struct bootmenu_entry *first; /* first menu entry */
|
||||
+ char *mtitle; /* custom menu title */
|
||||
bool last_choiced;
|
||||
};
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/cmd/Kconfig
|
||||
+++ b/cmd/Kconfig
|
||||
@@ -483,6 +483,12 @@ config CMD_ENV_EXISTS
|
||||
@@ -540,6 +540,12 @@ config CMD_ENV_EXISTS
|
||||
Check if a variable is defined in the environment for use in
|
||||
shell scripting.
|
||||
|
||||
@ -76,7 +76,7 @@
|
||||
#if defined(CONFIG_CMD_ENV_CALLBACK)
|
||||
static int print_static_binding(const char *var_name, const char *callback_name,
|
||||
void *priv)
|
||||
@@ -1189,6 +1243,9 @@ static struct cmd_tbl cmd_env_sub[] = {
|
||||
@@ -1231,6 +1285,9 @@ static struct cmd_tbl cmd_env_sub[] = {
|
||||
U_BOOT_CMD_MKENT(load, 1, 0, do_env_load, "", ""),
|
||||
#endif
|
||||
U_BOOT_CMD_MKENT(print, CONFIG_SYS_MAXARGS, 1, do_env_print, "", ""),
|
||||
@ -86,7 +86,7 @@
|
||||
#if defined(CONFIG_CMD_RUN)
|
||||
U_BOOT_CMD_MKENT(run, CONFIG_SYS_MAXARGS, 1, do_run, "", ""),
|
||||
#endif
|
||||
@@ -1277,6 +1334,9 @@ static char env_help_text[] =
|
||||
@@ -1322,6 +1379,9 @@ static char env_help_text[] =
|
||||
#if defined(CONFIG_CMD_NVEDIT_EFI)
|
||||
"env print -e [-guid guid] [-n] [name ...] - print UEFI environment\n"
|
||||
#endif
|
||||
@ -96,7 +96,7 @@
|
||||
#if defined(CONFIG_CMD_RUN)
|
||||
"env run var [...] - run commands in an environment variable\n"
|
||||
#endif
|
||||
@@ -1386,6 +1446,17 @@ U_BOOT_CMD(
|
||||
@@ -1431,6 +1491,17 @@ U_BOOT_CMD(
|
||||
);
|
||||
#endif
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/cmd/pstore.c
|
||||
+++ b/cmd/pstore.c
|
||||
@@ -207,6 +207,58 @@ static int pstore_set(struct cmd_tbl *cm
|
||||
@@ -208,6 +208,58 @@ static int pstore_set(struct cmd_tbl *cm
|
||||
}
|
||||
|
||||
/**
|
||||
@ -59,7 +59,7 @@
|
||||
* pstore_print_buffer() - Print buffer
|
||||
* @type: buffer type
|
||||
* @buffer: buffer to print
|
||||
@@ -458,6 +510,7 @@ static int pstore_save(struct cmd_tbl *c
|
||||
@@ -459,6 +511,7 @@ static int pstore_save(struct cmd_tbl *c
|
||||
|
||||
static struct cmd_tbl cmd_pstore_sub[] = {
|
||||
U_BOOT_CMD_MKENT(set, 8, 0, pstore_set, "", ""),
|
||||
@ -67,7 +67,7 @@
|
||||
U_BOOT_CMD_MKENT(display, 3, 0, pstore_display, "", ""),
|
||||
U_BOOT_CMD_MKENT(save, 4, 0, pstore_save, "", ""),
|
||||
};
|
||||
@@ -531,6 +584,8 @@ U_BOOT_CMD(pstore, 10, 0, do_pstore,
|
||||
@@ -560,6 +613,8 @@ U_BOOT_CMD(pstore, 10, 0, do_pstore,
|
||||
" 'pmsg-size' is the size of the user space logs record.\n"
|
||||
" 'ecc-size' enables/disables ECC support and specifies ECC buffer size in\n"
|
||||
" bytes (0 disables it, 1 is a special value, means 16 bytes ECC).\n"
|
||||
|
||||
@ -14,13 +14,11 @@ Reviewed-by: Tom Rini <trini@konsulko.com>
|
||||
boot/image-fdt.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/boot/image-fdt.c b/boot/image-fdt.c
|
||||
index 692a9ad3e4..fdb69926a2 100644
|
||||
--- a/boot/image-fdt.c
|
||||
+++ b/boot/image-fdt.c
|
||||
@@ -601,6 +601,12 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
|
||||
goto err;
|
||||
}
|
||||
@@ -639,6 +639,12 @@ int image_setup_libfdt(bootm_headers_t *
|
||||
images->fit_uname_cfg,
|
||||
strlen(images->fit_uname_cfg) + 1, 1);
|
||||
|
||||
+ /* Store name of configuration node as u-boot,bootconf in /chosen node */
|
||||
+ if (images->fit_uname_cfg)
|
||||
@ -31,6 +29,3 @@ index 692a9ad3e4..fdb69926a2 100644
|
||||
/* Update ethernet nodes */
|
||||
fdt_fixup_ethernet(blob);
|
||||
#if CONFIG_IS_ENABLED(CMD_PSTORE)
|
||||
--
|
||||
2.35.3
|
||||
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -2063,26 +2063,7 @@ endif
|
||||
# Check dtc and pylibfdt, if DTC is provided, else build them
|
||||
PHONY += scripts_dtc
|
||||
scripts_dtc: scripts_basic
|
||||
- $(Q)if test "$(DTC)" = "$(DTC_INTREE)"; then \
|
||||
- $(MAKE) $(build)=scripts/dtc; \
|
||||
- else \
|
||||
- if ! $(DTC) -v >/dev/null; then \
|
||||
- echo '*** Failed to check dtc version: $(DTC)'; \
|
||||
- false; \
|
||||
- else \
|
||||
- if test "$(call dtc-version)" -lt $(DTC_MIN_VERSION); then \
|
||||
- echo '*** Your dtc is too old, please upgrade to dtc $(DTC_MIN_VERSION) or newer'; \
|
||||
- false; \
|
||||
- else \
|
||||
- if [ -n "$(CONFIG_PYLIBFDT)" ]; then \
|
||||
- if ! echo "import libfdt" | $(PYTHON3) 2>/dev/null; then \
|
||||
- echo '*** pylibfdt does not seem to be available with $(PYTHON3)'; \
|
||||
- false; \
|
||||
- fi; \
|
||||
- fi; \
|
||||
- fi; \
|
||||
- fi; \
|
||||
- fi
|
||||
+ $(MAKE) $(build)=scripts/dtc
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
quiet_cmd_cpp_lds = LDS $@
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/spi/spi-nor-ids.c
|
||||
+++ b/drivers/mtd/spi/spi-nor-ids.c
|
||||
@@ -369,6 +369,8 @@ const struct flash_info spi_nor_ids[] =
|
||||
@@ -376,6 +376,8 @@ const struct flash_info spi_nor_ids[] =
|
||||
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
},
|
||||
{ INFO("w25q256", 0xef4019, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
|
||||
@ -7,12 +7,11 @@
|
||||
-CONFIG_ENV_SIZE=0x1000
|
||||
+CONFIG_ENV_SIZE=0x10000
|
||||
CONFIG_ENV_OFFSET=0x100000
|
||||
-CONFIG_DEFAULT_DEVICE_TREE="mt7623n-bananapi-bpi-r2"
|
||||
CONFIG_TARGET_MT7623=y
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="mt7623n-bananapi-bpi-r2"
|
||||
CONFIG_DEFAULT_DEVICE_TREE="mt7623n-bananapi-bpi-r2"
|
||||
+CONFIG_USE_DEFAULT_ENV_FILE=y
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_TARGET_MT7623=y
|
||||
CONFIG_SYS_LOAD_ADDR=0x84000000
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_FIT=y
|
||||
-CONFIG_FIT_VERBOSE=y
|
||||
+CONFIG_FIT_ENABLE_SHA256_SUPPORT=y
|
||||
|
||||
@ -10,8 +10,8 @@
|
||||
CONFIG_DEFAULT_DEVICE_TREE="mt7623a-unielec-u7623-02-emmc"
|
||||
+CONFIG_USE_DEFAULT_ENV_FILE=y
|
||||
CONFIG_TARGET_MT7623=y
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_SYS_LOAD_ADDR=0x84000000
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_FIT=y
|
||||
-CONFIG_FIT_VERBOSE=y
|
||||
+CONFIG_FIT_ENABLE_SHA256_SUPPORT=y
|
||||
|
||||
@ -337,7 +337,7 @@
|
||||
+};
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -1133,6 +1133,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
@@ -1203,6 +1203,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
mt7622-rfb.dtb \
|
||||
mt7623a-unielec-u7623-02-emmc.dtb \
|
||||
mt7622-bananapi-bpi-r64.dtb \
|
||||
|
||||
@ -349,7 +349,7 @@
|
||||
+};
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -1134,6 +1134,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
@@ -1204,6 +1204,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
mt7623a-unielec-u7623-02-emmc.dtb \
|
||||
mt7622-bananapi-bpi-r64.dtb \
|
||||
mt7622-linksys-e8450-ubi.dtb \
|
||||
@ -412,15 +412,15 @@
|
||||
+_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title [33m$ver[0m"
|
||||
--- a/common/board_r.c
|
||||
+++ b/common/board_r.c
|
||||
@@ -78,6 +78,7 @@
|
||||
#ifdef CONFIG_EFI_SETUP_EARLY
|
||||
@@ -62,6 +62,7 @@
|
||||
#include <asm-generic/gpio.h>
|
||||
#include <efi_loader.h>
|
||||
#endif
|
||||
#include <relocate.h>
|
||||
+#include <spi_flash.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
@@ -417,6 +418,21 @@ static int initr_onenand(void)
|
||||
@@ -392,6 +393,20 @@ static int initr_onenand(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -430,11 +430,10 @@
|
||||
+{
|
||||
+ struct udevice *new;
|
||||
+
|
||||
+ spi_flash_probe_bus_cs(CONFIG_SF_DEFAULT_BUS,
|
||||
+ CONFIG_SF_DEFAULT_CS,
|
||||
+ CONFIG_SF_DEFAULT_SPEED,
|
||||
+ CONFIG_SF_DEFAULT_MODE,
|
||||
+ &new);
|
||||
+spi_flash_probe_bus_cs(CONFIG_SF_DEFAULT_BUS,
|
||||
+ CONFIG_SF_DEFAULT_CS,
|
||||
+ &new);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
@ -442,7 +441,7 @@
|
||||
#ifdef CONFIG_MMC
|
||||
static int initr_mmc(void)
|
||||
{
|
||||
@@ -705,6 +721,9 @@ static init_fnc_t init_sequence_r[] = {
|
||||
@@ -703,6 +718,9 @@ static init_fnc_t init_sequence_r[] = {
|
||||
#ifdef CONFIG_CMD_ONENAND
|
||||
initr_onenand,
|
||||
#endif
|
||||
|
||||
@ -20,23 +20,16 @@ Subject: [PATCH] add support for RAVPower RP-WD009
|
||||
create mode 100644 configs/ravpower-rp-wd009-ram_defconfig
|
||||
create mode 100644 include/configs/ravpower-rp-wd009.h
|
||||
|
||||
diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile
|
||||
index c9d75596f2..23868ae1d2 100644
|
||||
--- a/arch/mips/dts/Makefile
|
||||
+++ b/arch/mips/dts/Makefile
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
dtb-$(CONFIG_ARCH_MTMIPS) += \
|
||||
gardena-smart-gateway-mt7688.dtb \
|
||||
- linkit-smart-7688.dtb
|
||||
+ linkit-smart-7688.dtb \
|
||||
+ ravpower-rp-wd009.dtb
|
||||
dtb-$(CONFIG_TARGET_AP121) += ap121.dtb
|
||||
dtb-$(CONFIG_TARGET_AP143) += ap143.dtb
|
||||
dtb-$(CONFIG_TARGET_AP152) += ap152.dtb
|
||||
diff --git a/arch/mips/dts/ravpower-rp-wd009.dts b/arch/mips/dts/ravpower-rp-wd009.dts
|
||||
new file mode 100644
|
||||
index 0000000000..b271d5bfbc
|
||||
@@ -25,6 +25,7 @@ dtb-$(CONFIG_TARGET_OCTEON_EBB7304) += m
|
||||
dtb-$(CONFIG_TARGET_OCTEON_NIC23) += mrvl,octeon-nic23.dtb
|
||||
dtb-$(CONFIG_BOARD_NETGEAR_CG3100D) += netgear,cg3100d.dtb
|
||||
dtb-$(CONFIG_BOARD_NETGEAR_DGND3700V2) += netgear,dgnd3700v2.dtb
|
||||
+dtb-$(CONFIG_BOARD_RAVPOWER_RP_WD009) += ravpower-rp-wd009.dtb
|
||||
dtb-$(CONFIG_BOARD_SAGEM_FAST1704) += sagem,f@st1704.dtb
|
||||
dtb-$(CONFIG_BOARD_SFR_NB4_SER) += sfr,nb4-ser.dtb
|
||||
dtb-$(CONFIG_BOARD_TPLINK_WDR4300) += tplink_wdr4300.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/mips/dts/ravpower-rp-wd009.dts
|
||||
@@ -0,0 +1,50 @@
|
||||
@ -90,36 +83,6 @@ index 0000000000..b271d5bfbc
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&ephy_router_mode>;
|
||||
+};
|
||||
diff --git a/arch/mips/mach-mtmips/Kconfig b/arch/mips/mach-mtmips/Kconfig
|
||||
index c8dcf19c0d..85ac8878ab 100644
|
||||
--- a/arch/mips/mach-mtmips/Kconfig
|
||||
+++ b/arch/mips/mach-mtmips/Kconfig
|
||||
@@ -32,6 +32,14 @@ config BOARD_GARDENA_SMART_GATEWAY_MT7688
|
||||
GARDENA smart Gateway boards have a MT7688 SoC with 128 MiB of RAM
|
||||
and 8 MiB of flash (SPI NOR) and additional SPI NAND storage.
|
||||
|
||||
+config BOARD_RAVPOWER_RP_WD009
|
||||
+ bool "RAVPower RP-WD009"
|
||||
+ depends on SOC_MT7628
|
||||
+ select BOARD_LATE_INIT
|
||||
+ select SUPPORTS_BOOT_RAM
|
||||
+ help
|
||||
+ RAVPower RP-WD009
|
||||
+
|
||||
config BOARD_LINKIT_SMART_7688
|
||||
bool "LinkIt Smart 7688"
|
||||
depends on SOC_MT7628
|
||||
@@ -133,6 +141,7 @@ config SUPPORTS_BOOT_RAM
|
||||
bool
|
||||
|
||||
source "board/gardena/smart-gateway-mt7688/Kconfig"
|
||||
+source "board/ravpower/rp-wd009/Kconfig"
|
||||
source "board/seeed/linkit-smart-7688/Kconfig"
|
||||
|
||||
endmenu
|
||||
diff --git a/board/ravpower/rp-wd009/Kconfig b/board/ravpower/rp-wd009/Kconfig
|
||||
new file mode 100644
|
||||
index 0000000000..111f8e4478
|
||||
--- /dev/null
|
||||
+++ b/board/ravpower/rp-wd009/Kconfig
|
||||
@@ -0,0 +1,12 @@
|
||||
@ -135,18 +98,12 @@ index 0000000000..111f8e4478
|
||||
+ default "ravpower-rp-wd009"
|
||||
+
|
||||
+endif
|
||||
diff --git a/board/ravpower/rp-wd009/Makefile b/board/ravpower/rp-wd009/Makefile
|
||||
new file mode 100644
|
||||
index 0000000000..70cd7a8e56
|
||||
--- /dev/null
|
||||
+++ b/board/ravpower/rp-wd009/Makefile
|
||||
@@ -0,0 +1,3 @@
|
||||
+# SPDX-License-Identifier: GPL-2.0+
|
||||
+
|
||||
+obj-y += board.o
|
||||
diff --git a/board/ravpower/rp-wd009/board.c b/board/ravpower/rp-wd009/board.c
|
||||
new file mode 100644
|
||||
index 0000000000..eabcf85735
|
||||
--- /dev/null
|
||||
+++ b/board/ravpower/rp-wd009/board.c
|
||||
@@ -0,0 +1,16 @@
|
||||
@ -166,16 +123,14 @@ index 0000000000..eabcf85735
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/configs/ravpower-rp-wd009-ram_defconfig b/configs/ravpower-rp-wd009-ram_defconfig
|
||||
new file mode 100644
|
||||
index 0000000000..08cbf40638
|
||||
--- /dev/null
|
||||
+++ b/configs/ravpower-rp-wd009-ram_defconfig
|
||||
@@ -0,0 +1,59 @@
|
||||
@@ -0,0 +1,61 @@
|
||||
+CONFIG_MIPS=y
|
||||
+CONFIG_SYS_TEXT_BASE=0x80010000
|
||||
+CONFIG_SYS_LOAD_ADDR=0x80010000
|
||||
+CONFIG_NR_DRAM_BANKS=1
|
||||
+CONFIG_ARCH_MTMIPS=y
|
||||
+CONFIG_SOC_MT7628=y
|
||||
+CONFIG_MIPS_BOOT_FDT=y
|
||||
+CONFIG_LEGACY_IMAGE_FORMAT=y
|
||||
+CONFIG_OF_STDOUT_VIA_ALIAS=y
|
||||
@ -185,7 +140,6 @@ index 0000000000..08cbf40638
|
||||
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
|
||||
+CONFIG_VERSION_VARIABLE=y
|
||||
+CONFIG_BOARD_RAVPOWER_RP_WD009=y
|
||||
+CONFIG_BOARD_EARLY_INIT_F=y
|
||||
+CONFIG_HUSH_PARSER=y
|
||||
+CONFIG_CMD_LICENSE=y
|
||||
+# CONFIG_CMD_ELF is not set
|
||||
@ -203,6 +157,8 @@ index 0000000000..08cbf40638
|
||||
+CONFIG_CMD_TIME=y
|
||||
+CONFIG_CMD_UUID=y
|
||||
+CONFIG_CMD_MTDPARTS=y
|
||||
+CONFIG_FIT=y
|
||||
+CONFIG_FIT_ENABLE_SHA256_SUPPORT=y
|
||||
+CONFIG_MTDIDS_DEFAULT="nor0=spi0.0"
|
||||
+CONFIG_MTDPARTS_DEFAULT="spi0.0:192k(factory-uboot),64k(config),64k(factory),1536k(loader),64k(params),64k(user_backup),64k(user),14272k(firmware),64k(mode)"
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="ravpower-rp-wd009"
|
||||
@ -231,12 +187,9 @@ index 0000000000..08cbf40638
|
||||
+CONFIG_WDT_MT7621=y
|
||||
+CONFIG_LZMA=y
|
||||
+CONFIG_BAUDRATE=57600
|
||||
diff --git a/include/configs/ravpower-rp-wd009.h b/include/configs/ravpower-rp-wd009.h
|
||||
new file mode 100644
|
||||
index 0000000000..bb4145197c
|
||||
--- /dev/null
|
||||
+++ b/include/configs/ravpower-rp-wd009.h
|
||||
@@ -0,0 +1,48 @@
|
||||
@@ -0,0 +1,42 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
+/*
|
||||
+ * Copyright (C) 2018 Stefan Roese <sr@denx.de>
|
||||
@ -251,8 +204,6 @@ index 0000000000..bb4145197c
|
||||
+/* RAM */
|
||||
+#define CONFIG_SYS_SDRAM_BASE 0x80000000
|
||||
+
|
||||
+#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_SDRAM_BASE + 0x100000
|
||||
+
|
||||
+#define CONFIG_SYS_INIT_SP_OFFSET 0x400000
|
||||
+
|
||||
+#ifdef CONFIG_BOOT_RAM
|
||||
@ -269,13 +220,9 @@ index 0000000000..bb4145197c
|
||||
+
|
||||
+/* Memory usage */
|
||||
+#define CONFIG_SYS_MAXARGS 64
|
||||
+#define CONFIG_SYS_MALLOC_LEN (16 * 1024 * 1024)
|
||||
+#define CONFIG_SYS_BOOTPARAMS_LEN (128 * 1024)
|
||||
+#define CONFIG_SYS_CBSIZE 512
|
||||
+
|
||||
+/* U-Boot */
|
||||
+#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
|
||||
+
|
||||
+/* Environment settings */
|
||||
+
|
||||
+/*
|
||||
@ -285,6 +232,28 @@ index 0000000000..bb4145197c
|
||||
+#define CONFIG_BOARD_SIZE_LIMIT CONFIG_ENV_OFFSET
|
||||
+
|
||||
+#endif /* __CONFIG_RAVPOWER_RP_WD009_H */
|
||||
--
|
||||
2.27.0
|
||||
|
||||
--- a/arch/mips/mach-mtmips/mt7628/Kconfig
|
||||
+++ b/arch/mips/mach-mtmips/mt7628/Kconfig
|
||||
@@ -27,6 +27,14 @@ config BOARD_MT7628_RFB
|
||||
SPI-NOR flash, 1 built-in switch with 5 ports, 1 UART, 1 USB host,
|
||||
1 SDXC, 1 PCIe socket and JTAG pins.
|
||||
|
||||
+config BOARD_RAVPOWER_RP_WD009
|
||||
+ bool "RAVPower RP-WD009"
|
||||
+ depends on SOC_MT7628
|
||||
+ select BOARD_LATE_INIT
|
||||
+ select SUPPORTS_BOOT_RAM
|
||||
+ help
|
||||
+ RAVPower RP-WD009
|
||||
+
|
||||
config BOARD_VOCORE2
|
||||
bool "VoCore2"
|
||||
select SPL_SERIAL
|
||||
@@ -53,6 +61,7 @@ config SYS_CONFIG_NAME
|
||||
default "mt7628" if BOARD_MT7628_RFB
|
||||
|
||||
source "board/gardena/smart-gateway-mt7688/Kconfig"
|
||||
+source "board/ravpower/rp-wd009/Kconfig"
|
||||
source "board/seeed/linkit-smart-7688/Kconfig"
|
||||
source "board/vocore/vocore2/Kconfig"
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
--- a/drivers/mtd/ubi/attach.c
|
||||
+++ b/drivers/mtd/ubi/attach.c
|
||||
@@ -802,6 +802,13 @@ out_unlock:
|
||||
return err;
|
||||
}
|
||||
|
||||
+static bool ec_hdr_has_eof(struct ubi_ec_hdr *ech)
|
||||
+{
|
||||
+ return ech->padding1[0] == 'E' &&
|
||||
+ ech->padding1[1] == 'O' &&
|
||||
+ ech->padding1[2] == 'F';
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* scan_peb - scan and process UBI headers of a PEB.
|
||||
* @ubi: UBI device description object
|
||||
@@ -832,9 +839,21 @@ static int scan_peb(struct ubi_device *u
|
||||
return 0;
|
||||
}
|
||||
|
||||
- err = ubi_io_read_ec_hdr(ubi, pnum, ech, 0);
|
||||
- if (err < 0)
|
||||
- return err;
|
||||
+ if (!ai->eof_found) {
|
||||
+ err = ubi_io_read_ec_hdr(ubi, pnum, ech, 0);
|
||||
+ if (err < 0)
|
||||
+ return err;
|
||||
+
|
||||
+ if (ec_hdr_has_eof(ech)) {
|
||||
+ pr_notice("UBI: EOF marker found, PEBs from %d will be erased\n",
|
||||
+ pnum);
|
||||
+ ai->eof_found = true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (ai->eof_found)
|
||||
+ err = UBI_IO_FF_BITFLIPS;
|
||||
+
|
||||
switch (err) {
|
||||
case 0:
|
||||
break;
|
||||
--- a/drivers/mtd/ubi/ubi.h
|
||||
+++ b/drivers/mtd/ubi/ubi.h
|
||||
@@ -745,6 +745,7 @@ struct ubi_attach_info {
|
||||
int mean_ec;
|
||||
uint64_t ec_sum;
|
||||
int ec_count;
|
||||
+ bool eof_found;
|
||||
struct kmem_cache *aeb_slab_cache;
|
||||
};
|
||||
|
||||
@ -1,34 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_VERSION:=2020.04
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_HASH:=fe732aaf037d9cc3c0909bad8362af366ae964bbdac6913a34081ff4ad565372
|
||||
|
||||
include $(INCLUDE_DIR)/u-boot.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define U-Boot/Default
|
||||
BUILD_TARGET:=ramips
|
||||
UBOOT_IMAGE:=u-boot.bin
|
||||
endef
|
||||
|
||||
define U-Boot/ravpower_rp-wd009
|
||||
BUILD_DEVICES:=ravpower_rp-wd009
|
||||
BUILD_SUBTARGET:=mt76x8
|
||||
NAME:=RAVPower RP-WD009
|
||||
UBOOT_CONFIG:=ravpower-rp-wd009-ram
|
||||
endef
|
||||
|
||||
UBOOT_TARGETS := \
|
||||
ravpower_rp-wd009
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) $(STAGING_DIR_IMAGE)/$(VARIANT)-$(UBOOT_IMAGE)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage/U-Boot))
|
||||
@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=strace
|
||||
PKG_VERSION:=5.18
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=https://strace.io/files/$(PKG_VERSION)
|
||||
@ -29,6 +29,7 @@ PKG_CONFIG_DEPENDS := \
|
||||
CONFIG_STRACE_LIBUNWIND
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
|
||||
HOST_CFLAGS += -I$(LINUX_DIR)/user_headers/include
|
||||
|
||||
|
||||
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=intel-microcode
|
||||
PKG_VERSION:=20220207
|
||||
PKG_VERSION:=20220510
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).1.tar.xz
|
||||
PKG_SOURCE_URL:=@DEBIAN/pool/non-free/i/intel-microcode/
|
||||
PKG_HASH:=42f2ab3c14bda745ec64008cde5c0f416f32f40e838a9df04cf5ddf5fc87498b
|
||||
PKG_HASH:=49752447c1b905dd130699cdef09fb2bba47b6f413d27787c98a5569273e283e
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/intel-microcode-3.$(PKG_VERSION).1
|
||||
|
||||
PKG_BUILD_DEPENDS:=iucode-tool/host
|
||||
|
||||
@ -30,7 +30,6 @@ ALLWIFIBOARDS:= \
|
||||
edgecore_ecw5410 \
|
||||
edgecore_oap100 \
|
||||
glinet_gl-ap1300 \
|
||||
glinet_gl-b2200 \
|
||||
glinet_gl-s1300 \
|
||||
linksys_ea8300 \
|
||||
p2w_r619ac \
|
||||
@ -102,7 +101,6 @@ $(eval $(call generate-ipq-wifi-package,devolo_magic-2-wifi-next,devolo Magic 2
|
||||
$(eval $(call generate-ipq-wifi-package,edgecore_ecw5410,Edgecore ECW5410))
|
||||
$(eval $(call generate-ipq-wifi-package,edgecore_oap100,Edgecore OAP100))
|
||||
$(eval $(call generate-ipq-wifi-package,glinet_gl-ap1300,GL.iNet GL-AP1300))
|
||||
$(eval $(call generate-ipq-wifi-package,glinet_gl-b2200,GL.iNet GL-B2200))
|
||||
$(eval $(call generate-ipq-wifi-package,glinet_gl-s1300,GL.iNet GL-S1300))
|
||||
$(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300))
|
||||
$(eval $(call generate-ipq-wifi-package,p2w_r619ac,P&W R619AC))
|
||||
|
||||
Binary file not shown.
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=linux-firmware
|
||||
PKG_VERSION:=20220509
|
||||
PKG_VERSION:=20220708
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_HASH:=376e0b3d7b4f8aaa2abf7f5ab74803dcf14b06b94e3d841b1467cd9a2848255e
|
||||
PKG_HASH:=0abec827a035c82bdcabdf82aa37ded247bc682ef05861bd409ea6f477bab81d
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
|
||||
@ -8,25 +8,17 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_NAME:=prism54-firmware
|
||||
PKG_RELEASE:=1
|
||||
|
||||
# Prism54 FullMAC firmware (jbnore.free.fr seems to be rather slow, so we use daemonizer.de)
|
||||
# P54 SoftMAC firmware (jbnore.free.fr seems to be rather slow, so we use daemonizer.de)
|
||||
PRG_URL:=https://daemonizer.de/prism54/prism54-fw/
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
||||
# PRISM54/P54 firmwares
|
||||
PRISM54FW:=1.0.4.3.arm
|
||||
# P54 firmwares
|
||||
P54USBFW:=2.13.24.0.lm87.arm
|
||||
P54PCIFW:=2.13.12.0.arm
|
||||
P54SPIFW:=2.13.0.0.a.13.14.arm
|
||||
|
||||
define Download/prism54-firmware
|
||||
FILE:=$(PRISM54FW)
|
||||
URL:=$(PRG_URL)/fw-fullmac
|
||||
HASH:=dce24156c57234dba131429fbe8cd1de8ba818c9481ddc33cf7e5af9d57a737c
|
||||
endef
|
||||
$(eval $(call Download,prism54-firmware))
|
||||
|
||||
define Download/p54-usb-firmware
|
||||
FILE:=$(P54USBFW)
|
||||
URL:=$(PRG_URL)/fw-usb
|
||||
@ -55,11 +47,6 @@ define Package/prism54-firmware-default
|
||||
URL:=https://daemonizer.de/prism54/prism54-fw
|
||||
endef
|
||||
|
||||
define Package/prism54-firmware
|
||||
$(Package/prism54-firmware-default)
|
||||
TITLE:=prism54 firmware
|
||||
endef
|
||||
|
||||
define Package/p54-usb-firmware
|
||||
$(Package/prism54-firmware-default)
|
||||
TITLE:=p54-usb firmware
|
||||
@ -84,11 +71,6 @@ define Build/Compile
|
||||
|
||||
endef
|
||||
|
||||
define Package/prism54-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(DL_DIR)/$(PRISM54FW) $(1)/lib/firmware/isl3890
|
||||
endef
|
||||
|
||||
define Package/p54-usb-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(DL_DIR)/$(P54USBFW) $(1)/lib/firmware/isl3887usb
|
||||
@ -105,7 +87,6 @@ define Package/p54-spi-firmware/install
|
||||
endef
|
||||
|
||||
|
||||
$(eval $(call BuildPackage,prism54-firmware))
|
||||
$(eval $(call BuildPackage,p54-usb-firmware))
|
||||
$(eval $(call BuildPackage,p54-pci-firmware))
|
||||
$(eval $(call BuildPackage,p54-spi-firmware))
|
||||
|
||||
@ -7,23 +7,6 @@
|
||||
|
||||
WIRELESS_MENU:=Wireless Drivers
|
||||
|
||||
define KernelPackage/net-prism54
|
||||
SUBMENU:=$(WIRELESS_MENU)
|
||||
TITLE:=Intersil Prism54 support
|
||||
DEPENDS:=@PCI_SUPPORT +@DRIVER_WEXT_SUPPORT +prism54-firmware
|
||||
KCONFIG:=CONFIG_PRISM54
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/net/wireless/intersil/prism54/prism54.ko
|
||||
AUTOLOAD:=$(call AutoProbe,prism54)
|
||||
endef
|
||||
|
||||
define KernelPackage/net-prism54/description
|
||||
Kernel modules for Intersil Prism54 support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,net-prism54))
|
||||
|
||||
|
||||
define KernelPackage/net-rtl8192su
|
||||
SUBMENU:=$(WIRELESS_MENU)
|
||||
TITLE:=RTL8192SU support (staging)
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Wed, 13 Jul 2022 07:32:26 +0200
|
||||
Subject: [PATCH] mac80211: exclude multicast packets from AQL pending airtime
|
||||
|
||||
In AP mode, multicast traffic is handled very differently from normal traffic,
|
||||
especially if at least one client is in powersave mode.
|
||||
This means that multicast packets can be buffered a lot longer than normal
|
||||
unicast packets, and can eat up the AQL budget very quickly because of the low
|
||||
data rate.
|
||||
Along with the recent change to maintain a global PHY AQL limit, this can lead
|
||||
to significant latency spikes for unicast traffic.
|
||||
|
||||
Since queueing multicast to hardware is currently not constrained by AQL limits
|
||||
anyway, let's just exclude it from the AQL pending airtime calculation entirely.
|
||||
|
||||
Fixes: 8e4bac067105 ("wifi: mac80211: add a per-PHY AQL limit to improve fairness")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3792,7 +3792,7 @@ begin:
|
||||
encap_out:
|
||||
IEEE80211_SKB_CB(skb)->control.vif = vif;
|
||||
|
||||
- if (vif &&
|
||||
+ if (tx.sta &&
|
||||
wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL)) {
|
||||
bool ampdu = txq->ac != IEEE80211_AC_VO;
|
||||
u32 airtime;
|
||||
@ -1,504 +0,0 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
||||
@ -1,20 +0,0 @@
|
||||
Copyright status on all included code:
|
||||
|
||||
All files which have no copyright comments are original works
|
||||
Copyright (C) 2005-2006 Rich Felker. The decision to exclude such
|
||||
comments is intentional, as it should be possible to carry around the
|
||||
complete source code on tiny storage media. All public header files
|
||||
(include/*) should be treated as Public Domain as they intentionally
|
||||
contain no content which can be covered by copyright. Some source
|
||||
modules may fall in this category as well. If you believe that a file
|
||||
is so trivial that it should be in the Public Domain, please contact
|
||||
me and, if I agree, I will explicitly release it from copyright.
|
||||
|
||||
Some code has been modified by the OpenWrt project, this includes
|
||||
the conversion from char map files to C arrays and the iconv.h header
|
||||
file in particular.
|
||||
|
||||
The library as a whole is licensed under the GNU LGPL version 2.1.
|
||||
See the file COPYING for the text of this license.
|
||||
|
||||
The original source can be accessed at svn://svn.mplayerhq.hu/libc/trunk
|
||||
@ -1,79 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2010-2012 OpenWrt.org
|
||||
#
|
||||
# This Makefile and the code shipped in src/ is free software, licensed
|
||||
# under the GNU Lesser General Public License, version 2.1 and later.
|
||||
# See src/COPYING for more information.
|
||||
#
|
||||
# Refer to src/COPYRIGHT for copyright statements on the source files.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libiconv
|
||||
PKG_RELEASE:=8
|
||||
|
||||
PKG_LICENSE:=LGPL-2.1
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
|
||||
define Package/libiconv
|
||||
SECTION:=libs
|
||||
CATEGORY:=Libraries
|
||||
TITLE:=Tiny drop-in replacement for the GNU Character set conversion library
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) -c $(PKG_BUILD_DIR)/iconv.c -o $(PKG_BUILD_DIR)/iconv.o -I$(PKG_BUILD_DIR)/include $(FPIC)
|
||||
$(TARGET_CROSS)ar rcs $(PKG_BUILD_DIR)/libiconv.a $(PKG_BUILD_DIR)/iconv.o
|
||||
endef
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(1)/usr/lib/libiconv-stub/lib
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libiconv.a $(1)/usr/lib/libiconv-stub/lib/
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/lib/libiconv-stub/include
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/include/iconv.h $(1)/usr/lib/libiconv-stub/include/
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/share/aclocal
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/m4/* $(1)/usr/share/aclocal/
|
||||
endef
|
||||
|
||||
define Package/libiconv/install
|
||||
$(INSTALL_DIR) $(1)/tmp
|
||||
touch $(1)/tmp/.libiconv-placeholder
|
||||
endef
|
||||
|
||||
define Host/Prepare
|
||||
mkdir -p $(HOST_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Host/Configure
|
||||
|
||||
endef
|
||||
|
||||
define Host/Compile
|
||||
$(HOSTCC) -c src/iconv.c -o $(HOST_BUILD_DIR)/iconv.o -Isrc/include -fPIC
|
||||
ar rcs $(HOST_BUILD_DIR)/libiconv.a $(HOST_BUILD_DIR)/iconv.o
|
||||
endef
|
||||
|
||||
define Host/Install
|
||||
$(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/lib
|
||||
$(INSTALL_DATA) $(HOST_BUILD_DIR)/libiconv.a $(STAGING_DIR_HOSTPKG)/lib/
|
||||
|
||||
$(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/include
|
||||
$(INSTALL_DATA) ./src/include/iconv.h $(STAGING_DIR_HOSTPKG)/include/
|
||||
|
||||
$(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/share/aclocal
|
||||
$(INSTALL_DATA) ./src/m4/* $(STAGING_DIR_HOSTPKG)/share/aclocal/
|
||||
endef
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
$(eval $(call BuildPackage,libiconv))
|
||||
@ -1,6 +0,0 @@
|
||||
The source file iconv.m4 contains the following message
|
||||
|
||||
Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
|
||||
This file is free software; the Free Software Foundation
|
||||
gives unlimited permission to copy and/or distribute it,
|
||||
with or without modifications, as long as this notice is preserved.
|
||||
@ -1,449 +0,0 @@
|
||||
#include <iconv.h>
|
||||
#include <errno.h>
|
||||
#include <wchar.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include <dirent.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/* builtin charmaps */
|
||||
#include "charmaps.h"
|
||||
|
||||
/* only 0-7 are valid as dest charset */
|
||||
#define UTF_16BE 000
|
||||
#define UTF_16LE 001
|
||||
#define UTF_32BE 002
|
||||
#define UTF_32LE 003
|
||||
#define WCHAR_T 004
|
||||
#define UTF_8 005
|
||||
#define US_ASCII 006
|
||||
#define LATIN_1 007
|
||||
|
||||
/* additional charsets with algorithmic conversion */
|
||||
#define LATIN_9 010
|
||||
#define TIS_620 011
|
||||
#define JIS_0201 012
|
||||
|
||||
/* some programs like php need this */
|
||||
int _libiconv_version = _LIBICONV_VERSION;
|
||||
|
||||
/* these must match the constants above */
|
||||
static const unsigned char charsets[] =
|
||||
"\005" "UTF-8" "\0"
|
||||
"\004" "WCHAR_T" "\0"
|
||||
"\000" "UTF-16BE" "\0"
|
||||
"\001" "UTF-16LE" "\0"
|
||||
"\002" "UTF-32BE" "\0"
|
||||
"\003" "UTF-32LE" "\0"
|
||||
"\006" "ASCII" "\0"
|
||||
"\006" "US-ASCII" "\0"
|
||||
"\006" "ISO646-US" "\0"
|
||||
"\006" "ISO_646.IRV:1991" "\0"
|
||||
"\006" "ISO-IR-6" "\0"
|
||||
"\006" "ANSI_X3.4-1968" "\0"
|
||||
"\006" "ANSI_X3.4-1986" "\0"
|
||||
"\006" "CP367" "\0"
|
||||
"\006" "IBM367" "\0"
|
||||
"\006" "US" "\0"
|
||||
"\006" "CSASCII" "\0"
|
||||
"\007" "ISO-8859-1" "\0"
|
||||
"\007" "LATIN1" "\0"
|
||||
"\010" "ISO-8859-15""\0"
|
||||
"\010" "LATIN9" "\0"
|
||||
"\011" "ISO-8859-11""\0"
|
||||
"\011" "TIS-620" "\0"
|
||||
"\012" "JIS-0201" "\0"
|
||||
"\377";
|
||||
|
||||
/* separate identifiers for sbcs/dbcs/etc map type */
|
||||
#define UCS2_8BIT 000
|
||||
#define UCS3_8BIT 001
|
||||
#define EUC 002
|
||||
#define EUC_TW 003
|
||||
#define SHIFT_JIS 004
|
||||
#define BIG5 005
|
||||
#define GBK 006
|
||||
|
||||
/* FIXME: these are not implemented yet
|
||||
// EUC: A1-FE A1-FE
|
||||
// GBK: 81-FE 40-7E,80-FE
|
||||
// Big5: A1-FE 40-7E,A1-FE
|
||||
*/
|
||||
|
||||
static const unsigned short maplen[] = {
|
||||
[UCS2_8BIT] = 4+ 2* 128,
|
||||
[UCS3_8BIT] = 4+ 3* 128,
|
||||
[EUC] = 4+ 2* 94*94,
|
||||
[SHIFT_JIS] = 4+ 2* 94*94,
|
||||
[BIG5] = 4+ 2* 94*157,
|
||||
[GBK] = 4+ 2* 126*190,
|
||||
[EUC_TW] = 4+ 2* 2*94*94,
|
||||
};
|
||||
|
||||
static int find_charmap(const char *name)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < (sizeof(charmaps) / sizeof(charmaps[0])); i++)
|
||||
if (!strcasecmp(charmaps[i].name, name))
|
||||
return i;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int find_charset(const char *name)
|
||||
{
|
||||
const unsigned char *s;
|
||||
for (s=charsets; *s<0xff && strcasecmp(s+1, name); s+=strlen(s)+1);
|
||||
return *s;
|
||||
}
|
||||
|
||||
iconv_t iconv_open(const char *to, const char *from)
|
||||
{
|
||||
unsigned f, t;
|
||||
int m;
|
||||
|
||||
if ((t = find_charset(to)) > 8)
|
||||
return -1;
|
||||
|
||||
if ((f = find_charset(from)) < 255)
|
||||
return 0 | (t<<1) | (f<<8);
|
||||
|
||||
if ((m = find_charmap(from)) > -1)
|
||||
return 1 | (t<<1) | (m<<8);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int iconv_close(iconv_t cd)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline wchar_t get_16(const unsigned char *s, int endian)
|
||||
{
|
||||
endian &= 1;
|
||||
return s[endian]<<8 | s[endian^1];
|
||||
}
|
||||
|
||||
static inline void put_16(unsigned char *s, wchar_t c, int endian)
|
||||
{
|
||||
endian &= 1;
|
||||
s[endian] = c>>8;
|
||||
s[endian^1] = c;
|
||||
}
|
||||
|
||||
static inline int utf8enc_wchar(char *outb, wchar_t c)
|
||||
{
|
||||
if (c <= 0x7F) {
|
||||
*outb = c;
|
||||
return 1;
|
||||
}
|
||||
else if (c <= 0x7FF) {
|
||||
*outb++ = ((c >> 6) & 0x1F) | 0xC0;
|
||||
*outb++ = ( c & 0x3F) | 0x80;
|
||||
return 2;
|
||||
}
|
||||
else if (c <= 0xFFFF) {
|
||||
*outb++ = ((c >> 12) & 0x0F) | 0xE0;
|
||||
*outb++ = ((c >> 6) & 0x3F) | 0x80;
|
||||
*outb++ = ( c & 0x3F) | 0x80;
|
||||
return 3;
|
||||
}
|
||||
else if (c <= 0x10FFFF) {
|
||||
*outb++ = ((c >> 18) & 0x07) | 0xF0;
|
||||
*outb++ = ((c >> 12) & 0x3F) | 0x80;
|
||||
*outb++ = ((c >> 6) & 0x3F) | 0x80;
|
||||
*outb++ = ( c & 0x3F) | 0x80;
|
||||
return 4;
|
||||
}
|
||||
else {
|
||||
*outb++ = '?';
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
static inline int utf8seq_is_overlong(char *s, int n)
|
||||
{
|
||||
switch (n)
|
||||
{
|
||||
case 2:
|
||||
/* 1100000x (10xxxxxx) */
|
||||
return (((*s >> 1) == 0x60) &&
|
||||
((*(s+1) >> 6) == 0x02));
|
||||
|
||||
case 3:
|
||||
/* 11100000 100xxxxx (10xxxxxx) */
|
||||
return ((*s == 0xE0) &&
|
||||
((*(s+1) >> 5) == 0x04) &&
|
||||
((*(s+2) >> 6) == 0x02));
|
||||
|
||||
case 4:
|
||||
/* 11110000 1000xxxx (10xxxxxx 10xxxxxx) */
|
||||
return ((*s == 0xF0) &&
|
||||
((*(s+1) >> 4) == 0x08) &&
|
||||
((*(s+2) >> 6) == 0x02) &&
|
||||
((*(s+3) >> 6) == 0x02));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int utf8seq_is_surrogate(char *s, int n)
|
||||
{
|
||||
return ((n == 3) && (*s == 0xED) && (*(s+1) >= 0xA0) && (*(s+1) <= 0xBF));
|
||||
}
|
||||
|
||||
static inline int utf8seq_is_illegal(char *s, int n)
|
||||
{
|
||||
return ((n == 3) && (*s == 0xEF) && (*(s+1) == 0xBF) &&
|
||||
(*(s+2) >= 0xBE) && (*(s+2) <= 0xBF));
|
||||
}
|
||||
|
||||
static inline int utf8dec_wchar(wchar_t *c, unsigned char *in, size_t inb)
|
||||
{
|
||||
int i;
|
||||
int n = -1;
|
||||
|
||||
/* trivial char */
|
||||
if (*in <= 0x7F) {
|
||||
*c = *in;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* find utf8 sequence length */
|
||||
if ((*in & 0xE0) == 0xC0) n = 2;
|
||||
else if ((*in & 0xF0) == 0xE0) n = 3;
|
||||
else if ((*in & 0xF8) == 0xF0) n = 4;
|
||||
else if ((*in & 0xFC) == 0xF8) n = 5;
|
||||
else if ((*in & 0xFE) == 0xFC) n = 6;
|
||||
|
||||
/* starved? */
|
||||
if (n > inb)
|
||||
return -2;
|
||||
|
||||
/* decode ... */
|
||||
if (n > 1 && n < 5) {
|
||||
/* reject invalid sequences */
|
||||
if (utf8seq_is_overlong(in, n) ||
|
||||
utf8seq_is_surrogate(in, n) ||
|
||||
utf8seq_is_illegal(in, n))
|
||||
return -1;
|
||||
|
||||
/* decode ... */
|
||||
*c = (char)(*in++ & (0x7F >> n));
|
||||
|
||||
for (i = 1; i < n; i++) {
|
||||
/* illegal continuation byte */
|
||||
if (*in < 0x80 || *in > 0xBF)
|
||||
return -1;
|
||||
|
||||
*c = (*c << 6) | (*in++ & 0x3F);
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
/* unmapped sequence (> 4) */
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline wchar_t latin9_translit(wchar_t c)
|
||||
{
|
||||
/* a number of trivial iso-8859-15 <> utf-8 transliterations */
|
||||
switch (c) {
|
||||
case 0x20AC: return 0xA4; /* Euro */
|
||||
case 0x0160: return 0xA6; /* S caron */
|
||||
case 0x0161: return 0xA8; /* s caron */
|
||||
case 0x017D: return 0xB4; /* Z caron */
|
||||
case 0x017E: return 0xB8; /* z caron */
|
||||
case 0x0152: return 0xBC; /* OE */
|
||||
case 0x0153: return 0xBD; /* oe */
|
||||
case 0x0178: return 0xBE; /* Y diaeresis */
|
||||
default: return 0xFFFD; /* cannot translate */
|
||||
}
|
||||
}
|
||||
|
||||
size_t iconv(iconv_t cd, char **in, size_t *inb, char **out, size_t *outb)
|
||||
{
|
||||
size_t x=0;
|
||||
unsigned char to = (cd>>1)&127;
|
||||
unsigned char from = 255;
|
||||
const unsigned char *map = 0;
|
||||
char tmp[MB_LEN_MAX];
|
||||
wchar_t c, d;
|
||||
size_t k, l;
|
||||
int err;
|
||||
|
||||
if (!in || !*in || !*inb) return 0;
|
||||
|
||||
if (cd & 1)
|
||||
map = charmaps[cd>>8].map;
|
||||
else
|
||||
from = cd>>8;
|
||||
|
||||
for (; *inb; *in+=l, *inb-=l) {
|
||||
c = *(unsigned char *)*in;
|
||||
l = 1;
|
||||
if (from >= UTF_8 && c < 0x80) goto charok;
|
||||
switch (from) {
|
||||
case WCHAR_T:
|
||||
l = sizeof(wchar_t);
|
||||
if (*inb < l) goto starved;
|
||||
c = *(wchar_t *)*in;
|
||||
break;
|
||||
case UTF_8:
|
||||
l = utf8dec_wchar(&c, *in, *inb);
|
||||
if (!l) l++;
|
||||
else if (l == (size_t)-1) goto ilseq;
|
||||
else if (l == (size_t)-2) goto starved;
|
||||
break;
|
||||
case US_ASCII:
|
||||
goto ilseq;
|
||||
case LATIN_9:
|
||||
if ((unsigned)c - 0xa4 <= 0xbe - 0xa4) {
|
||||
static const unsigned char map[] = {
|
||||
0, 0x60, 0, 0x61, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0x7d, 0, 0, 0, 0x7e, 0, 0, 0,
|
||||
0x52, 0x53, 0x78
|
||||
};
|
||||
if (c == 0xa4) c = 0x20ac;
|
||||
else if (map[c-0xa5]) c = 0x100 | map[c-0xa5];
|
||||
}
|
||||
case LATIN_1:
|
||||
goto charok;
|
||||
case TIS_620:
|
||||
if (c >= 0xa1) c += 0x0e01-0xa1;
|
||||
goto charok;
|
||||
case JIS_0201:
|
||||
if (c >= 0xa1) {
|
||||
if (c <= 0xdf) c += 0xff61-0xa1;
|
||||
else goto ilseq;
|
||||
}
|
||||
goto charok;
|
||||
case UTF_16BE:
|
||||
case UTF_16LE:
|
||||
l = 2;
|
||||
if (*inb < 2) goto starved;
|
||||
c = get_16(*in, from);
|
||||
if ((unsigned)(c-0xdc00) < 0x400) goto ilseq;
|
||||
if ((unsigned)(c-0xd800) < 0x400) {
|
||||
l = 4;
|
||||
if (*inb < 4) goto starved;
|
||||
d = get_16(*in + 2, from);
|
||||
if ((unsigned)(c-0xdc00) >= 0x400) goto ilseq;
|
||||
c = ((c-0xd800)<<10) | (d-0xdc00);
|
||||
}
|
||||
break;
|
||||
case UTF_32BE:
|
||||
case UTF_32LE:
|
||||
l = 4;
|
||||
if (*inb < 4) goto starved;
|
||||
// FIXME
|
||||
// c = get_32(*in, from);
|
||||
break;
|
||||
default:
|
||||
/* only support ascii supersets */
|
||||
if (c < 0x80) break;
|
||||
switch (map[0]) {
|
||||
case UCS2_8BIT:
|
||||
c -= 0x80;
|
||||
break;
|
||||
case EUC:
|
||||
if ((unsigned)c - 0xa1 >= 94) goto ilseq;
|
||||
if ((unsigned)in[0][1] - 0xa1 >= 94) goto ilseq;
|
||||
c = (c-0xa1)*94 + (in[0][1]-0xa1);
|
||||
l = 2;
|
||||
break;
|
||||
case SHIFT_JIS:
|
||||
if ((unsigned)c - 0xa1 <= 0xdf-0xa1) {
|
||||
c += 0xff61-0xa1;
|
||||
goto charok;
|
||||
}
|
||||
// FIXME...
|
||||
l = 2;
|
||||
break;
|
||||
default:
|
||||
goto badf;
|
||||
}
|
||||
c = get_16(map + 4 + 2*c, 0);
|
||||
if (c == 0xffff) goto ilseq;
|
||||
goto charok;
|
||||
}
|
||||
|
||||
if ((unsigned)c - 0xd800 < 0x800 || (unsigned)c >= 0x110000)
|
||||
goto ilseq;
|
||||
charok:
|
||||
switch (to) {
|
||||
case WCHAR_T:
|
||||
if (*outb < sizeof(wchar_t)) goto toobig;
|
||||
*(wchar_t *)*out = c;
|
||||
*out += sizeof(wchar_t);
|
||||
*outb -= sizeof(wchar_t);
|
||||
break;
|
||||
case UTF_8:
|
||||
if (*outb < 4) {
|
||||
k = utf8enc_wchar(tmp, c);
|
||||
if (*outb < k) goto toobig;
|
||||
memcpy(*out, tmp, k);
|
||||
} else k = utf8enc_wchar(*out, c);
|
||||
*out += k;
|
||||
*outb -= k;
|
||||
break;
|
||||
case US_ASCII:
|
||||
if (c > 0x7f) c = 0xfffd;
|
||||
/* fall thru and count replacement in latin1 case */
|
||||
case LATIN_9:
|
||||
if (c >= 0x100 && c != 0xfffd)
|
||||
c = latin9_translit(c);
|
||||
/* fall through */
|
||||
case LATIN_1:
|
||||
if (c > 0xff) goto ilseq;
|
||||
if (!*outb) goto toobig;
|
||||
**out = c;
|
||||
++*out;
|
||||
--*outb;
|
||||
break;
|
||||
case UTF_16BE:
|
||||
case UTF_16LE:
|
||||
if (c < 0x10000) {
|
||||
if (*outb < 2) goto toobig;
|
||||
put_16(*out, c, to);
|
||||
*out += 2;
|
||||
*outb -= 2;
|
||||
break;
|
||||
}
|
||||
if (*outb < 4) goto toobig;
|
||||
put_16(*out, (c>>10)|0xd800, to);
|
||||
put_16(*out + 2, (c&0x3ff)|0xdc00, to);
|
||||
*out += 4;
|
||||
*outb -= 4;
|
||||
break;
|
||||
default:
|
||||
goto badf;
|
||||
}
|
||||
}
|
||||
return x;
|
||||
ilseq:
|
||||
err = EILSEQ;
|
||||
x = -1;
|
||||
goto end;
|
||||
badf:
|
||||
err = EBADF;
|
||||
x = -1;
|
||||
goto end;
|
||||
toobig:
|
||||
err = E2BIG;
|
||||
x = -1;
|
||||
goto end;
|
||||
starved:
|
||||
err = EINVAL;
|
||||
end:
|
||||
errno = err;
|
||||
return x;
|
||||
}
|
||||
@ -1,80 +0,0 @@
|
||||
#include "charmaps/iso-8859-2.h"
|
||||
#include "charmaps/iso-8859-10.h"
|
||||
#include "charmaps/windows-874.h"
|
||||
#include "charmaps/windows-1250.h"
|
||||
#include "charmaps/koi8-r.h"
|
||||
|
||||
#ifdef ALL_CHARSETS
|
||||
#include "charmaps/iso-8859-3.h"
|
||||
#include "charmaps/iso-8859-4.h"
|
||||
#include "charmaps/iso-8859-5.h"
|
||||
#include "charmaps/iso-8859-6.h"
|
||||
#include "charmaps/iso-8859-7.h"
|
||||
#include "charmaps/iso-8859-8.h"
|
||||
#include "charmaps/iso-8859-9.h"
|
||||
#include "charmaps/iso-8859-13.h"
|
||||
#include "charmaps/iso-8859-14.h"
|
||||
#include "charmaps/iso-8859-16.h"
|
||||
#include "charmaps/windows-1251.h"
|
||||
#include "charmaps/windows-1252.h"
|
||||
#include "charmaps/windows-1253.h"
|
||||
#include "charmaps/windows-1254.h"
|
||||
#include "charmaps/windows-1255.h"
|
||||
#include "charmaps/windows-1256.h"
|
||||
#include "charmaps/windows-1257.h"
|
||||
#include "charmaps/windows-1258.h"
|
||||
#endif
|
||||
|
||||
|
||||
struct charmap {
|
||||
const char name[13];
|
||||
const unsigned char *map;
|
||||
};
|
||||
|
||||
static struct charmap charmaps[] = {
|
||||
{ "ISO-8859-2", map_iso_8859_2 },
|
||||
{ "ISO-8859-10", map_iso_8859_10 },
|
||||
|
||||
#ifdef ALL_CHARSETS
|
||||
{ "ISO-8859-3", map_iso_8859_3 },
|
||||
{ "ISO-8859-4", map_iso_8859_4 },
|
||||
{ "ISO-8859-5", map_iso_8859_5 },
|
||||
{ "ISO-8859-6", map_iso_8859_6 },
|
||||
{ "ISO-8859-7", map_iso_8859_7 },
|
||||
{ "ISO-8859-8", map_iso_8859_8 },
|
||||
{ "ISO-8859-9", map_iso_8859_9 },
|
||||
{ "ISO-8859-13", map_iso_8859_13 },
|
||||
{ "ISO-8859-14", map_iso_8859_14 },
|
||||
{ "ISO-8859-16", map_iso_8859_16 },
|
||||
#endif
|
||||
|
||||
{ "WINDOWS-874", map_windows_874 },
|
||||
{ "WINDOWS-1250", map_windows_1250 },
|
||||
|
||||
#ifdef ALL_CHARSETS
|
||||
{ "WINDOWS-1251", map_windows_1251 },
|
||||
{ "WINDOWS-1252", map_windows_1252 },
|
||||
{ "WINDOWS-1253", map_windows_1253 },
|
||||
{ "WINDOWS-1254", map_windows_1254 },
|
||||
{ "WINDOWS-1255", map_windows_1255 },
|
||||
{ "WINDOWS-1256", map_windows_1256 },
|
||||
{ "WINDOWS-1257", map_windows_1257 },
|
||||
{ "WINDOWS-1258", map_windows_1258 },
|
||||
#endif
|
||||
|
||||
{ "KOI8-R", map_koi8_r },
|
||||
|
||||
/* Aliases */
|
||||
{ "LATIN2", map_iso_8859_2 },
|
||||
{ "LATIN6", map_iso_8859_10 },
|
||||
|
||||
#ifdef ALL_CHARSETS
|
||||
{ "ARABIC", map_iso_8859_6 },
|
||||
{ "CYRILLIC", map_iso_8859_5 },
|
||||
{ "GREEK", map_iso_8859_7 },
|
||||
{ "HEBREW", map_iso_8859_8 },
|
||||
{ "LATIN3", map_iso_8859_3 },
|
||||
{ "LATIN4", map_iso_8859_4 },
|
||||
{ "LATIN5", map_iso_8859_9 },
|
||||
#endif
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_10[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x01, 0x04,
|
||||
0x01, 0x12, 0x01, 0x22, 0x01, 0x2a, 0x01, 0x28, 0x01, 0x36, 0x00, 0xa7,
|
||||
0x01, 0x3b, 0x01, 0x10, 0x01, 0x60, 0x01, 0x66, 0x01, 0x7d, 0x00, 0xad,
|
||||
0x01, 0x6a, 0x01, 0x4a, 0x00, 0xb0, 0x01, 0x05, 0x01, 0x13, 0x01, 0x23,
|
||||
0x01, 0x2b, 0x01, 0x29, 0x01, 0x37, 0x00, 0xb7, 0x01, 0x3c, 0x01, 0x11,
|
||||
0x01, 0x61, 0x01, 0x67, 0x01, 0x7e, 0x20, 0x15, 0x01, 0x6b, 0x01, 0x4b,
|
||||
0x01, 0x00, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5,
|
||||
0x00, 0xc6, 0x01, 0x2e, 0x01, 0x0c, 0x00, 0xc9, 0x01, 0x18, 0x00, 0xcb,
|
||||
0x01, 0x16, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x01, 0x45,
|
||||
0x01, 0x4c, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x01, 0x68,
|
||||
0x00, 0xd8, 0x01, 0x72, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xdd,
|
||||
0x00, 0xde, 0x00, 0xdf, 0x01, 0x01, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe3,
|
||||
0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x01, 0x2f, 0x01, 0x0d, 0x00, 0xe9,
|
||||
0x01, 0x19, 0x00, 0xeb, 0x01, 0x17, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef,
|
||||
0x00, 0xf0, 0x01, 0x46, 0x01, 0x4d, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5,
|
||||
0x00, 0xf6, 0x01, 0x69, 0x00, 0xf8, 0x01, 0x73, 0x00, 0xfa, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x01, 0x38
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_13[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x20, 0x1d,
|
||||
0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x20, 0x1e, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xd8, 0x00, 0xa9, 0x01, 0x56, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x00, 0xc6, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x20, 0x1c, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xf8, 0x00, 0xb9,
|
||||
0x01, 0x57, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xe6,
|
||||
0x01, 0x04, 0x01, 0x2e, 0x01, 0x00, 0x01, 0x06, 0x00, 0xc4, 0x00, 0xc5,
|
||||
0x01, 0x18, 0x01, 0x12, 0x01, 0x0c, 0x00, 0xc9, 0x01, 0x79, 0x01, 0x16,
|
||||
0x01, 0x22, 0x01, 0x36, 0x01, 0x2a, 0x01, 0x3b, 0x01, 0x60, 0x01, 0x43,
|
||||
0x01, 0x45, 0x00, 0xd3, 0x01, 0x4c, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x01, 0x72, 0x01, 0x41, 0x01, 0x5a, 0x01, 0x6a, 0x00, 0xdc, 0x01, 0x7b,
|
||||
0x01, 0x7d, 0x00, 0xdf, 0x01, 0x05, 0x01, 0x2f, 0x01, 0x01, 0x01, 0x07,
|
||||
0x00, 0xe4, 0x00, 0xe5, 0x01, 0x19, 0x01, 0x13, 0x01, 0x0d, 0x00, 0xe9,
|
||||
0x01, 0x7a, 0x01, 0x17, 0x01, 0x23, 0x01, 0x37, 0x01, 0x2b, 0x01, 0x3c,
|
||||
0x01, 0x61, 0x01, 0x44, 0x01, 0x46, 0x00, 0xf3, 0x01, 0x4d, 0x00, 0xf5,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x01, 0x73, 0x01, 0x42, 0x01, 0x5b, 0x01, 0x6b,
|
||||
0x00, 0xfc, 0x01, 0x7c, 0x01, 0x7e, 0x20, 0x19
|
||||
};
|
||||
@ -1,25 +0,0 @@
|
||||
static const unsigned char map_iso_8859_14[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x1e, 0x02,
|
||||
0x1e, 0x03, 0x00, 0xa3, 0x01, 0x0a, 0x01, 0x0b, 0x1e, 0x0a, 0x00, 0xa7,
|
||||
0x1e, 0x80, 0x00, 0xa9, 0x1e, 0x82, 0x1e, 0x0b, 0x1e, 0xf2, 0x00, 0xad,
|
||||
0x00, 0xae, 0x01, 0x78, 0x1e, 0x1e, 0x1e, 0x1f, 0x01, 0x20, 0x01, 0x21,
|
||||
0x1e, 0x40, 0x1e, 0x41, 0x00, 0xb6, 0x1e, 0x56, 0x1e, 0x81, 0x1e, 0x57,
|
||||
0x1e, 0x83, 0x1e, 0x60, 0x1e, 0xf3, 0x1e, 0x84, 0x1e, 0x85, 0x1e, 0x61,
|
||||
0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5,
|
||||
0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb,
|
||||
0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x01, 0x74, 0x00, 0xd1,
|
||||
0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x1e, 0x6a,
|
||||
0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xdd,
|
||||
0x01, 0x76, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe3,
|
||||
0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9,
|
||||
0x00, 0xea, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef,
|
||||
0x01, 0x75, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5,
|
||||
0x00, 0xf6, 0x1e, 0x6b, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x00, 0xfd, 0x01, 0x77, 0x00, 0xff
|
||||
};
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_16[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x01, 0x04,
|
||||
0x01, 0x05, 0x01, 0x41, 0x20, 0xac, 0x20, 0x1e, 0x01, 0x60, 0x00, 0xa7,
|
||||
0x01, 0x61, 0x00, 0xa9, 0x02, 0x18, 0x00, 0xab, 0x01, 0x79, 0x00, 0xad,
|
||||
0x01, 0x7a, 0x01, 0x7b, 0x00, 0xb0, 0x00, 0xb1, 0x01, 0x0c, 0x01, 0x42,
|
||||
0x01, 0x7d, 0x20, 0x1d, 0x00, 0xb6, 0x00, 0xb7, 0x01, 0x7e, 0x01, 0x0d,
|
||||
0x02, 0x19, 0x00, 0xbb, 0x01, 0x52, 0x01, 0x53, 0x01, 0x78, 0x01, 0x7c,
|
||||
0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x06,
|
||||
0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb,
|
||||
0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x01, 0x10, 0x01, 0x43,
|
||||
0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x01, 0x50, 0x00, 0xd6, 0x01, 0x5a,
|
||||
0x01, 0x70, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x01, 0x18,
|
||||
0x02, 0x1a, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe2, 0x01, 0x03,
|
||||
0x00, 0xe4, 0x01, 0x07, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9,
|
||||
0x00, 0xea, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef,
|
||||
0x01, 0x11, 0x01, 0x44, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x01, 0x51,
|
||||
0x00, 0xf6, 0x01, 0x5b, 0x01, 0x71, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x01, 0x19, 0x02, 0x1b, 0x00, 0xff
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_2[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x01, 0x04,
|
||||
0x02, 0xd8, 0x01, 0x41, 0x00, 0xa4, 0x01, 0x3d, 0x01, 0x5a, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x01, 0x60, 0x01, 0x5e, 0x01, 0x64, 0x01, 0x79, 0x00, 0xad,
|
||||
0x01, 0x7d, 0x01, 0x7b, 0x00, 0xb0, 0x01, 0x05, 0x02, 0xdb, 0x01, 0x42,
|
||||
0x00, 0xb4, 0x01, 0x3e, 0x01, 0x5b, 0x02, 0xc7, 0x00, 0xb8, 0x01, 0x61,
|
||||
0x01, 0x5f, 0x01, 0x65, 0x01, 0x7a, 0x02, 0xdd, 0x01, 0x7e, 0x01, 0x7c,
|
||||
0x01, 0x54, 0x00, 0xc1, 0x00, 0xc2, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x39,
|
||||
0x01, 0x06, 0x00, 0xc7, 0x01, 0x0c, 0x00, 0xc9, 0x01, 0x18, 0x00, 0xcb,
|
||||
0x01, 0x1a, 0x00, 0xcd, 0x00, 0xce, 0x01, 0x0e, 0x01, 0x10, 0x01, 0x43,
|
||||
0x01, 0x47, 0x00, 0xd3, 0x00, 0xd4, 0x01, 0x50, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x01, 0x58, 0x01, 0x6e, 0x00, 0xda, 0x01, 0x70, 0x00, 0xdc, 0x00, 0xdd,
|
||||
0x01, 0x62, 0x00, 0xdf, 0x01, 0x55, 0x00, 0xe1, 0x00, 0xe2, 0x01, 0x03,
|
||||
0x00, 0xe4, 0x01, 0x3a, 0x01, 0x07, 0x00, 0xe7, 0x01, 0x0d, 0x00, 0xe9,
|
||||
0x01, 0x19, 0x00, 0xeb, 0x01, 0x1b, 0x00, 0xed, 0x00, 0xee, 0x01, 0x0f,
|
||||
0x01, 0x11, 0x01, 0x44, 0x01, 0x48, 0x00, 0xf3, 0x00, 0xf4, 0x01, 0x51,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x01, 0x59, 0x01, 0x6f, 0x00, 0xfa, 0x01, 0x71,
|
||||
0x00, 0xfc, 0x00, 0xfd, 0x01, 0x63, 0x02, 0xd9
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_3[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x01, 0x26,
|
||||
0x02, 0xd8, 0x00, 0xa3, 0x00, 0xa4, 0xff, 0xff, 0x01, 0x24, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x01, 0x30, 0x01, 0x5e, 0x01, 0x1e, 0x01, 0x34, 0x00, 0xad,
|
||||
0xff, 0xff, 0x01, 0x7b, 0x00, 0xb0, 0x01, 0x27, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x01, 0x25, 0x00, 0xb7, 0x00, 0xb8, 0x01, 0x31,
|
||||
0x01, 0x5f, 0x01, 0x1f, 0x01, 0x35, 0x00, 0xbd, 0xff, 0xff, 0x01, 0x7c,
|
||||
0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0xff, 0xff, 0x00, 0xc4, 0x01, 0x0a,
|
||||
0x01, 0x08, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb,
|
||||
0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0xff, 0xff, 0x00, 0xd1,
|
||||
0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x01, 0x20, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x01, 0x1c, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x01, 0x6c,
|
||||
0x01, 0x5c, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe2, 0xff, 0xff,
|
||||
0x00, 0xe4, 0x01, 0x0b, 0x01, 0x09, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9,
|
||||
0x00, 0xea, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef,
|
||||
0xff, 0xff, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x01, 0x21,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x01, 0x1d, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x01, 0x6d, 0x01, 0x5d, 0x02, 0xd9
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_4[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x01, 0x04,
|
||||
0x01, 0x38, 0x01, 0x56, 0x00, 0xa4, 0x01, 0x28, 0x01, 0x3b, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x01, 0x60, 0x01, 0x12, 0x01, 0x22, 0x01, 0x66, 0x00, 0xad,
|
||||
0x01, 0x7d, 0x00, 0xaf, 0x00, 0xb0, 0x01, 0x05, 0x02, 0xdb, 0x01, 0x57,
|
||||
0x00, 0xb4, 0x01, 0x29, 0x01, 0x3c, 0x02, 0xc7, 0x00, 0xb8, 0x01, 0x61,
|
||||
0x01, 0x13, 0x01, 0x23, 0x01, 0x67, 0x01, 0x4a, 0x01, 0x7e, 0x01, 0x4b,
|
||||
0x01, 0x00, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5,
|
||||
0x00, 0xc6, 0x01, 0x2e, 0x01, 0x0c, 0x00, 0xc9, 0x01, 0x18, 0x00, 0xcb,
|
||||
0x01, 0x16, 0x00, 0xcd, 0x00, 0xce, 0x01, 0x2a, 0x01, 0x10, 0x01, 0x45,
|
||||
0x01, 0x4c, 0x01, 0x36, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x00, 0xd8, 0x01, 0x72, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x01, 0x68,
|
||||
0x01, 0x6a, 0x00, 0xdf, 0x01, 0x01, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe3,
|
||||
0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x01, 0x2f, 0x01, 0x0d, 0x00, 0xe9,
|
||||
0x01, 0x19, 0x00, 0xeb, 0x01, 0x17, 0x00, 0xed, 0x00, 0xee, 0x01, 0x2b,
|
||||
0x01, 0x11, 0x01, 0x46, 0x01, 0x4d, 0x01, 0x37, 0x00, 0xf4, 0x00, 0xf5,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x01, 0x73, 0x00, 0xfa, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x01, 0x69, 0x01, 0x6b, 0x02, 0xd9
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_5[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x04, 0x01,
|
||||
0x04, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07,
|
||||
0x04, 0x08, 0x04, 0x09, 0x04, 0x0a, 0x04, 0x0b, 0x04, 0x0c, 0x00, 0xad,
|
||||
0x04, 0x0e, 0x04, 0x0f, 0x04, 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13,
|
||||
0x04, 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x17, 0x04, 0x18, 0x04, 0x19,
|
||||
0x04, 0x1a, 0x04, 0x1b, 0x04, 0x1c, 0x04, 0x1d, 0x04, 0x1e, 0x04, 0x1f,
|
||||
0x04, 0x20, 0x04, 0x21, 0x04, 0x22, 0x04, 0x23, 0x04, 0x24, 0x04, 0x25,
|
||||
0x04, 0x26, 0x04, 0x27, 0x04, 0x28, 0x04, 0x29, 0x04, 0x2a, 0x04, 0x2b,
|
||||
0x04, 0x2c, 0x04, 0x2d, 0x04, 0x2e, 0x04, 0x2f, 0x04, 0x30, 0x04, 0x31,
|
||||
0x04, 0x32, 0x04, 0x33, 0x04, 0x34, 0x04, 0x35, 0x04, 0x36, 0x04, 0x37,
|
||||
0x04, 0x38, 0x04, 0x39, 0x04, 0x3a, 0x04, 0x3b, 0x04, 0x3c, 0x04, 0x3d,
|
||||
0x04, 0x3e, 0x04, 0x3f, 0x04, 0x40, 0x04, 0x41, 0x04, 0x42, 0x04, 0x43,
|
||||
0x04, 0x44, 0x04, 0x45, 0x04, 0x46, 0x04, 0x47, 0x04, 0x48, 0x04, 0x49,
|
||||
0x04, 0x4a, 0x04, 0x4b, 0x04, 0x4c, 0x04, 0x4d, 0x04, 0x4e, 0x04, 0x4f,
|
||||
0x21, 0x16, 0x04, 0x51, 0x04, 0x52, 0x04, 0x53, 0x04, 0x54, 0x04, 0x55,
|
||||
0x04, 0x56, 0x04, 0x57, 0x04, 0x58, 0x04, 0x59, 0x04, 0x5a, 0x04, 0x5b,
|
||||
0x04, 0x5c, 0x00, 0xa7, 0x04, 0x5e, 0x04, 0x5f
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_6[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x00, 0xa4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x0c, 0x00, 0xad,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x06, 0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x1f,
|
||||
0xff, 0xff, 0x06, 0x21, 0x06, 0x22, 0x06, 0x23, 0x06, 0x24, 0x06, 0x25,
|
||||
0x06, 0x26, 0x06, 0x27, 0x06, 0x28, 0x06, 0x29, 0x06, 0x2a, 0x06, 0x2b,
|
||||
0x06, 0x2c, 0x06, 0x2d, 0x06, 0x2e, 0x06, 0x2f, 0x06, 0x30, 0x06, 0x31,
|
||||
0x06, 0x32, 0x06, 0x33, 0x06, 0x34, 0x06, 0x35, 0x06, 0x36, 0x06, 0x37,
|
||||
0x06, 0x38, 0x06, 0x39, 0x06, 0x3a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x06, 0x40, 0x06, 0x41, 0x06, 0x42, 0x06, 0x43,
|
||||
0x06, 0x44, 0x06, 0x45, 0x06, 0x46, 0x06, 0x47, 0x06, 0x48, 0x06, 0x49,
|
||||
0x06, 0x4a, 0x06, 0x4b, 0x06, 0x4c, 0x06, 0x4d, 0x06, 0x4e, 0x06, 0x4f,
|
||||
0x06, 0x50, 0x06, 0x51, 0x06, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_7[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x20, 0x18,
|
||||
0x20, 0x19, 0x00, 0xa3, 0x20, 0xac, 0x20, 0xaf, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0x03, 0x7a, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0xff, 0xff, 0x20, 0x15, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x03, 0x84, 0x03, 0x85, 0x03, 0x86, 0x00, 0xb7, 0x03, 0x88, 0x03, 0x89,
|
||||
0x03, 0x8a, 0x00, 0xbb, 0x03, 0x8c, 0x00, 0xbd, 0x03, 0x8e, 0x03, 0x8f,
|
||||
0x03, 0x90, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, 0x94, 0x03, 0x95,
|
||||
0x03, 0x96, 0x03, 0x97, 0x03, 0x98, 0x03, 0x99, 0x03, 0x9a, 0x03, 0x9b,
|
||||
0x03, 0x9c, 0x03, 0x9d, 0x03, 0x9e, 0x03, 0x9f, 0x03, 0xa0, 0x03, 0xa1,
|
||||
0xff, 0xff, 0x03, 0xa3, 0x03, 0xa4, 0x03, 0xa5, 0x03, 0xa6, 0x03, 0xa7,
|
||||
0x03, 0xa8, 0x03, 0xa9, 0x03, 0xaa, 0x03, 0xab, 0x03, 0xac, 0x03, 0xad,
|
||||
0x03, 0xae, 0x03, 0xaf, 0x03, 0xb0, 0x03, 0xb1, 0x03, 0xb2, 0x03, 0xb3,
|
||||
0x03, 0xb4, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0xb9,
|
||||
0x03, 0xba, 0x03, 0xbb, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0xbe, 0x03, 0xbf,
|
||||
0x03, 0xc0, 0x03, 0xc1, 0x03, 0xc2, 0x03, 0xc3, 0x03, 0xc4, 0x03, 0xc5,
|
||||
0x03, 0xc6, 0x03, 0xc7, 0x03, 0xc8, 0x03, 0xc9, 0x03, 0xca, 0x03, 0xcb,
|
||||
0x03, 0xcc, 0x03, 0xcd, 0x03, 0xce, 0xff, 0xff
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_8[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0xff, 0xff,
|
||||
0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0x00, 0xd7, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9,
|
||||
0x00, 0xf7, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x17, 0x05, 0xd0, 0x05, 0xd1, 0x05, 0xd2, 0x05, 0xd3,
|
||||
0x05, 0xd4, 0x05, 0xd5, 0x05, 0xd6, 0x05, 0xd7, 0x05, 0xd8, 0x05, 0xd9,
|
||||
0x05, 0xda, 0x05, 0xdb, 0x05, 0xdc, 0x05, 0xdd, 0x05, 0xde, 0x05, 0xdf,
|
||||
0x05, 0xe0, 0x05, 0xe1, 0x05, 0xe2, 0x05, 0xe3, 0x05, 0xe4, 0x05, 0xe5,
|
||||
0x05, 0xe6, 0x05, 0xe7, 0x05, 0xe8, 0x05, 0xe9, 0x05, 0xea, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x0e, 0x20, 0x0f, 0xff, 0xff
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_iso_8859_9[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83,
|
||||
0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89,
|
||||
0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f,
|
||||
0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95,
|
||||
0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b,
|
||||
0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1,
|
||||
0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9,
|
||||
0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf,
|
||||
0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5,
|
||||
0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb,
|
||||
0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x01, 0x1e, 0x00, 0xd1,
|
||||
0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x01, 0x30,
|
||||
0x01, 0x5e, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe3,
|
||||
0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9,
|
||||
0x00, 0xea, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef,
|
||||
0x01, 0x1f, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x01, 0x31, 0x01, 0x5f, 0x00, 0xff
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_koi8_r[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x25, 0x02, 0x25, 0x0c, 0x25, 0x10,
|
||||
0x25, 0x14, 0x25, 0x18, 0x25, 0x1c, 0x25, 0x24, 0x25, 0x2c, 0x25, 0x34,
|
||||
0x25, 0x3c, 0x25, 0x80, 0x25, 0x84, 0x25, 0x88, 0x25, 0x8c, 0x25, 0x90,
|
||||
0x25, 0x91, 0x25, 0x92, 0x25, 0x93, 0x23, 0x20, 0x25, 0xa0, 0x22, 0x19,
|
||||
0x22, 0x1a, 0x22, 0x48, 0x22, 0x64, 0x22, 0x65, 0x00, 0xa0, 0x23, 0x21,
|
||||
0x00, 0xb0, 0x00, 0xb2, 0x00, 0xb7, 0x00, 0xf7, 0x25, 0x50, 0x25, 0x51,
|
||||
0x25, 0x52, 0x04, 0x51, 0x25, 0x53, 0x25, 0x54, 0x25, 0x55, 0x25, 0x56,
|
||||
0x25, 0x57, 0x25, 0x58, 0x25, 0x59, 0x25, 0x5a, 0x25, 0x5b, 0x25, 0x5c,
|
||||
0x25, 0x5d, 0x25, 0x5e, 0x25, 0x5f, 0x25, 0x60, 0x25, 0x61, 0x04, 0x01,
|
||||
0x25, 0x62, 0x25, 0x63, 0x25, 0x64, 0x25, 0x65, 0x25, 0x66, 0x25, 0x67,
|
||||
0x25, 0x68, 0x25, 0x69, 0x25, 0x6a, 0x25, 0x6b, 0x25, 0x6c, 0x00, 0xa9,
|
||||
0x04, 0x4e, 0x04, 0x30, 0x04, 0x31, 0x04, 0x46, 0x04, 0x34, 0x04, 0x35,
|
||||
0x04, 0x44, 0x04, 0x33, 0x04, 0x45, 0x04, 0x38, 0x04, 0x39, 0x04, 0x3a,
|
||||
0x04, 0x3b, 0x04, 0x3c, 0x04, 0x3d, 0x04, 0x3e, 0x04, 0x3f, 0x04, 0x4f,
|
||||
0x04, 0x40, 0x04, 0x41, 0x04, 0x42, 0x04, 0x43, 0x04, 0x36, 0x04, 0x32,
|
||||
0x04, 0x4c, 0x04, 0x4b, 0x04, 0x37, 0x04, 0x48, 0x04, 0x4d, 0x04, 0x49,
|
||||
0x04, 0x47, 0x04, 0x4a, 0x04, 0x2e, 0x04, 0x10, 0x04, 0x11, 0x04, 0x26,
|
||||
0x04, 0x14, 0x04, 0x15, 0x04, 0x24, 0x04, 0x13, 0x04, 0x25, 0x04, 0x18,
|
||||
0x04, 0x19, 0x04, 0x1a, 0x04, 0x1b, 0x04, 0x1c, 0x04, 0x1d, 0x04, 0x1e,
|
||||
0x04, 0x1f, 0x04, 0x2f, 0x04, 0x20, 0x04, 0x21, 0x04, 0x22, 0x04, 0x23,
|
||||
0x04, 0x16, 0x04, 0x12, 0x04, 0x2c, 0x04, 0x2b, 0x04, 0x17, 0x04, 0x28,
|
||||
0x04, 0x2d, 0x04, 0x29, 0x04, 0x27, 0x04, 0x2a
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_windows_1250[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xac, 0xff, 0xff, 0x20, 0x1a, 0xff, 0xff,
|
||||
0x20, 0x1e, 0x20, 0x26, 0x20, 0x20, 0x20, 0x21, 0xff, 0xff, 0x20, 0x30,
|
||||
0x01, 0x60, 0x20, 0x39, 0x01, 0x5a, 0x01, 0x64, 0x01, 0x7d, 0x01, 0x79,
|
||||
0xff, 0xff, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0xff, 0xff, 0x21, 0x22, 0x01, 0x61, 0x20, 0x3a,
|
||||
0x01, 0x5b, 0x01, 0x65, 0x01, 0x7e, 0x01, 0x7a, 0x00, 0xa0, 0x02, 0xc7,
|
||||
0x02, 0xd8, 0x01, 0x41, 0x00, 0xa4, 0x01, 0x04, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0x01, 0x5e, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x01, 0x7b, 0x00, 0xb0, 0x00, 0xb1, 0x02, 0xdb, 0x01, 0x42,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x01, 0x05,
|
||||
0x01, 0x5f, 0x00, 0xbb, 0x01, 0x3d, 0x02, 0xdd, 0x01, 0x3e, 0x01, 0x7c,
|
||||
0x01, 0x54, 0x00, 0xc1, 0x00, 0xc2, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x39,
|
||||
0x01, 0x06, 0x00, 0xc7, 0x01, 0x0c, 0x00, 0xc9, 0x01, 0x18, 0x00, 0xcb,
|
||||
0x01, 0x1a, 0x00, 0xcd, 0x00, 0xce, 0x01, 0x0e, 0x01, 0x10, 0x01, 0x43,
|
||||
0x01, 0x47, 0x00, 0xd3, 0x00, 0xd4, 0x01, 0x50, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x01, 0x58, 0x01, 0x6e, 0x00, 0xda, 0x01, 0x70, 0x00, 0xdc, 0x00, 0xdd,
|
||||
0x01, 0x62, 0x00, 0xdf, 0x01, 0x55, 0x00, 0xe1, 0x00, 0xe2, 0x01, 0x03,
|
||||
0x00, 0xe4, 0x01, 0x3a, 0x01, 0x07, 0x00, 0xe7, 0x01, 0x0d, 0x00, 0xe9,
|
||||
0x01, 0x19, 0x00, 0xeb, 0x01, 0x1b, 0x00, 0xed, 0x00, 0xee, 0x01, 0x0f,
|
||||
0x01, 0x11, 0x01, 0x44, 0x01, 0x48, 0x00, 0xf3, 0x00, 0xf4, 0x01, 0x51,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x01, 0x59, 0x01, 0x6f, 0x00, 0xfa, 0x01, 0x71,
|
||||
0x00, 0xfc, 0x00, 0xfd, 0x01, 0x63, 0x02, 0xd9
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_windows_1251[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x04, 0x03, 0x20, 0x1a, 0x04, 0x53,
|
||||
0x20, 0x1e, 0x20, 0x26, 0x20, 0x20, 0x20, 0x21, 0x20, 0xac, 0x20, 0x30,
|
||||
0x04, 0x09, 0x20, 0x39, 0x04, 0x0a, 0x04, 0x0c, 0x04, 0x0b, 0x04, 0x0f,
|
||||
0x04, 0x52, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0xff, 0xff, 0x21, 0x22, 0x04, 0x59, 0x20, 0x3a,
|
||||
0x04, 0x5a, 0x04, 0x5c, 0x04, 0x5b, 0x04, 0x5f, 0x00, 0xa0, 0x04, 0x0e,
|
||||
0x04, 0x5e, 0x04, 0x08, 0x00, 0xa4, 0x04, 0x90, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x04, 0x01, 0x00, 0xa9, 0x04, 0x04, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x04, 0x07, 0x00, 0xb0, 0x00, 0xb1, 0x04, 0x06, 0x04, 0x56,
|
||||
0x04, 0x91, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x04, 0x51, 0x21, 0x16,
|
||||
0x04, 0x54, 0x00, 0xbb, 0x04, 0x58, 0x04, 0x05, 0x04, 0x55, 0x04, 0x57,
|
||||
0x04, 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, 0x04, 0x14, 0x04, 0x15,
|
||||
0x04, 0x16, 0x04, 0x17, 0x04, 0x18, 0x04, 0x19, 0x04, 0x1a, 0x04, 0x1b,
|
||||
0x04, 0x1c, 0x04, 0x1d, 0x04, 0x1e, 0x04, 0x1f, 0x04, 0x20, 0x04, 0x21,
|
||||
0x04, 0x22, 0x04, 0x23, 0x04, 0x24, 0x04, 0x25, 0x04, 0x26, 0x04, 0x27,
|
||||
0x04, 0x28, 0x04, 0x29, 0x04, 0x2a, 0x04, 0x2b, 0x04, 0x2c, 0x04, 0x2d,
|
||||
0x04, 0x2e, 0x04, 0x2f, 0x04, 0x30, 0x04, 0x31, 0x04, 0x32, 0x04, 0x33,
|
||||
0x04, 0x34, 0x04, 0x35, 0x04, 0x36, 0x04, 0x37, 0x04, 0x38, 0x04, 0x39,
|
||||
0x04, 0x3a, 0x04, 0x3b, 0x04, 0x3c, 0x04, 0x3d, 0x04, 0x3e, 0x04, 0x3f,
|
||||
0x04, 0x40, 0x04, 0x41, 0x04, 0x42, 0x04, 0x43, 0x04, 0x44, 0x04, 0x45,
|
||||
0x04, 0x46, 0x04, 0x47, 0x04, 0x48, 0x04, 0x49, 0x04, 0x4a, 0x04, 0x4b,
|
||||
0x04, 0x4c, 0x04, 0x4d, 0x04, 0x4e, 0x04, 0x4f
|
||||
};
|
||||
@ -1,25 +0,0 @@
|
||||
static const unsigned char map_windows_1252[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xac, 0xff, 0xff, 0x20, 0x1a, 0x01, 0x92,
|
||||
0x20, 0x1e, 0x20, 0x26, 0x20, 0x20, 0x20, 0x21, 0x02, 0xc6, 0x20, 0x30,
|
||||
0x01, 0x60, 0x20, 0x39, 0x01, 0x52, 0xff, 0xff, 0x01, 0x7d, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0x02, 0xdc, 0x21, 0x22, 0x01, 0x61, 0x20, 0x3a,
|
||||
0x01, 0x53, 0xff, 0xff, 0x01, 0x7e, 0x01, 0x78, 0x00, 0xa0, 0x00, 0xa1,
|
||||
0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9,
|
||||
0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf,
|
||||
0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5,
|
||||
0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb,
|
||||
0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1,
|
||||
0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xdd,
|
||||
0x00, 0xde, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe3,
|
||||
0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9,
|
||||
0x00, 0xea, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef,
|
||||
0x00, 0xf0, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0xff
|
||||
};
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_windows_1253[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xac, 0xff, 0xff, 0x20, 0x1a, 0x01, 0x92,
|
||||
0x20, 0x1e, 0x20, 0x26, 0x20, 0x20, 0x20, 0x21, 0xff, 0xff, 0x20, 0x30,
|
||||
0xff, 0xff, 0x20, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0xff, 0xff, 0x21, 0x22, 0xff, 0xff, 0x20, 0x3a,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xa0, 0x03, 0x85,
|
||||
0x03, 0x86, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0xff, 0xff, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x20, 0x15, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x03, 0x84, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x03, 0x88, 0x03, 0x89,
|
||||
0x03, 0x8a, 0x00, 0xbb, 0x03, 0x8c, 0x00, 0xbd, 0x03, 0x8e, 0x03, 0x8f,
|
||||
0x03, 0x90, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, 0x94, 0x03, 0x95,
|
||||
0x03, 0x96, 0x03, 0x97, 0x03, 0x98, 0x03, 0x99, 0x03, 0x9a, 0x03, 0x9b,
|
||||
0x03, 0x9c, 0x03, 0x9d, 0x03, 0x9e, 0x03, 0x9f, 0x03, 0xa0, 0x03, 0xa1,
|
||||
0xff, 0xff, 0x03, 0xa3, 0x03, 0xa4, 0x03, 0xa5, 0x03, 0xa6, 0x03, 0xa7,
|
||||
0x03, 0xa8, 0x03, 0xa9, 0x03, 0xaa, 0x03, 0xab, 0x03, 0xac, 0x03, 0xad,
|
||||
0x03, 0xae, 0x03, 0xaf, 0x03, 0xb0, 0x03, 0xb1, 0x03, 0xb2, 0x03, 0xb3,
|
||||
0x03, 0xb4, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0xb9,
|
||||
0x03, 0xba, 0x03, 0xbb, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0xbe, 0x03, 0xbf,
|
||||
0x03, 0xc0, 0x03, 0xc1, 0x03, 0xc2, 0x03, 0xc3, 0x03, 0xc4, 0x03, 0xc5,
|
||||
0x03, 0xc6, 0x03, 0xc7, 0x03, 0xc8, 0x03, 0xc9, 0x03, 0xca, 0x03, 0xcb,
|
||||
0x03, 0xcc, 0x03, 0xcd, 0x03, 0xce, 0xff, 0xff
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_windows_1254[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xac, 0xff, 0xff, 0x20, 0x1a, 0x01, 0x92,
|
||||
0x20, 0x1e, 0x20, 0x26, 0x20, 0x20, 0x20, 0x21, 0x02, 0xc6, 0x20, 0x30,
|
||||
0x01, 0x60, 0x20, 0x39, 0x01, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0x02, 0xdc, 0x21, 0x22, 0x01, 0x61, 0x20, 0x3a,
|
||||
0x01, 0x53, 0xff, 0xff, 0xff, 0xff, 0x01, 0x78, 0x00, 0xa0, 0x00, 0xa1,
|
||||
0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9,
|
||||
0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf,
|
||||
0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5,
|
||||
0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb,
|
||||
0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x01, 0x1e, 0x00, 0xd1,
|
||||
0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x01, 0x30,
|
||||
0x01, 0x5e, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe3,
|
||||
0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9,
|
||||
0x00, 0xea, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef,
|
||||
0x01, 0x1f, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x01, 0x31, 0x01, 0x5f, 0x00, 0xff
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_windows_1255[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xac, 0xff, 0xff, 0x20, 0x1a, 0x01, 0x92,
|
||||
0x20, 0x1e, 0x20, 0x26, 0x20, 0x20, 0x20, 0x21, 0x02, 0xc6, 0x20, 0x30,
|
||||
0xff, 0xff, 0x20, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0x02, 0xdc, 0x21, 0x22, 0xff, 0xff, 0x20, 0x3a,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xa0, 0x00, 0xa1,
|
||||
0x00, 0xa2, 0x00, 0xa3, 0x20, 0xaa, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0x00, 0xd7, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9,
|
||||
0x00, 0xf7, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf,
|
||||
0x05, 0xb0, 0x05, 0xb1, 0x05, 0xb2, 0x05, 0xb3, 0x05, 0xb4, 0x05, 0xb5,
|
||||
0x05, 0xb6, 0x05, 0xb7, 0x05, 0xb8, 0x05, 0xb9, 0xff, 0xff, 0x05, 0xbb,
|
||||
0x05, 0xbc, 0x05, 0xbd, 0x05, 0xbe, 0x05, 0xbf, 0x05, 0xc0, 0x05, 0xc1,
|
||||
0x05, 0xc2, 0x05, 0xc3, 0x05, 0xf0, 0x05, 0xf1, 0x05, 0xf2, 0x05, 0xf3,
|
||||
0x05, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x05, 0xd0, 0x05, 0xd1, 0x05, 0xd2, 0x05, 0xd3,
|
||||
0x05, 0xd4, 0x05, 0xd5, 0x05, 0xd6, 0x05, 0xd7, 0x05, 0xd8, 0x05, 0xd9,
|
||||
0x05, 0xda, 0x05, 0xdb, 0x05, 0xdc, 0x05, 0xdd, 0x05, 0xde, 0x05, 0xdf,
|
||||
0x05, 0xe0, 0x05, 0xe1, 0x05, 0xe2, 0x05, 0xe3, 0x05, 0xe4, 0x05, 0xe5,
|
||||
0x05, 0xe6, 0x05, 0xe7, 0x05, 0xe8, 0x05, 0xe9, 0x05, 0xea, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x0e, 0x20, 0x0f, 0xff, 0xff
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_windows_1256[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xac, 0x06, 0x7e, 0x20, 0x1a, 0x01, 0x92,
|
||||
0x20, 0x1e, 0x20, 0x26, 0x20, 0x20, 0x20, 0x21, 0x02, 0xc6, 0x20, 0x30,
|
||||
0x06, 0x79, 0x20, 0x39, 0x01, 0x52, 0x06, 0x86, 0x06, 0x98, 0x06, 0x88,
|
||||
0x06, 0xaf, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0x06, 0xa9, 0x21, 0x22, 0x06, 0x91, 0x20, 0x3a,
|
||||
0x01, 0x53, 0x20, 0x0c, 0x20, 0x0d, 0x06, 0xba, 0x00, 0xa0, 0x06, 0x0c,
|
||||
0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0x06, 0xbe, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9,
|
||||
0x06, 0x1b, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x06, 0x1f,
|
||||
0x06, 0xc1, 0x06, 0x21, 0x06, 0x22, 0x06, 0x23, 0x06, 0x24, 0x06, 0x25,
|
||||
0x06, 0x26, 0x06, 0x27, 0x06, 0x28, 0x06, 0x29, 0x06, 0x2a, 0x06, 0x2b,
|
||||
0x06, 0x2c, 0x06, 0x2d, 0x06, 0x2e, 0x06, 0x2f, 0x06, 0x30, 0x06, 0x31,
|
||||
0x06, 0x32, 0x06, 0x33, 0x06, 0x34, 0x06, 0x35, 0x06, 0x36, 0x00, 0xd7,
|
||||
0x06, 0x37, 0x06, 0x38, 0x06, 0x39, 0x06, 0x3a, 0x06, 0x40, 0x06, 0x41,
|
||||
0x06, 0x42, 0x06, 0x43, 0x00, 0xe0, 0x06, 0x44, 0x00, 0xe2, 0x06, 0x45,
|
||||
0x06, 0x46, 0x06, 0x47, 0x06, 0x48, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9,
|
||||
0x00, 0xea, 0x00, 0xeb, 0x06, 0x49, 0x06, 0x4a, 0x00, 0xee, 0x00, 0xef,
|
||||
0x06, 0x4b, 0x06, 0x4c, 0x06, 0x4d, 0x06, 0x4e, 0x00, 0xf4, 0x06, 0x4f,
|
||||
0x06, 0x50, 0x00, 0xf7, 0x06, 0x51, 0x00, 0xf9, 0x06, 0x52, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x20, 0x0e, 0x20, 0x0f, 0x06, 0xd2
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_windows_1257[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xac, 0xff, 0xff, 0x20, 0x1a, 0xff, 0xff,
|
||||
0x20, 0x1e, 0x20, 0x26, 0x20, 0x20, 0x20, 0x21, 0xff, 0xff, 0x20, 0x30,
|
||||
0xff, 0xff, 0x20, 0x39, 0xff, 0xff, 0x00, 0xa8, 0x02, 0xc7, 0x00, 0xb8,
|
||||
0xff, 0xff, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0xff, 0xff, 0x21, 0x22, 0xff, 0xff, 0x20, 0x3a,
|
||||
0xff, 0xff, 0x00, 0xaf, 0x02, 0xdb, 0xff, 0xff, 0x00, 0xa0, 0xff, 0xff,
|
||||
0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0xff, 0xff, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xd8, 0x00, 0xa9, 0x01, 0x56, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x00, 0xc6, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xf8, 0x00, 0xb9,
|
||||
0x01, 0x57, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xe6,
|
||||
0x01, 0x04, 0x01, 0x2e, 0x01, 0x00, 0x01, 0x06, 0x00, 0xc4, 0x00, 0xc5,
|
||||
0x01, 0x18, 0x01, 0x12, 0x01, 0x0c, 0x00, 0xc9, 0x01, 0x79, 0x01, 0x16,
|
||||
0x01, 0x22, 0x01, 0x36, 0x01, 0x2a, 0x01, 0x3b, 0x01, 0x60, 0x01, 0x43,
|
||||
0x01, 0x45, 0x00, 0xd3, 0x01, 0x4c, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x01, 0x72, 0x01, 0x41, 0x01, 0x5a, 0x01, 0x6a, 0x00, 0xdc, 0x01, 0x7b,
|
||||
0x01, 0x7d, 0x00, 0xdf, 0x01, 0x05, 0x01, 0x2f, 0x01, 0x01, 0x01, 0x07,
|
||||
0x00, 0xe4, 0x00, 0xe5, 0x01, 0x19, 0x01, 0x13, 0x01, 0x0d, 0x00, 0xe9,
|
||||
0x01, 0x7a, 0x01, 0x17, 0x01, 0x23, 0x01, 0x37, 0x01, 0x2b, 0x01, 0x3c,
|
||||
0x01, 0x61, 0x01, 0x44, 0x01, 0x46, 0x00, 0xf3, 0x01, 0x4d, 0x00, 0xf5,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x01, 0x73, 0x01, 0x42, 0x01, 0x5b, 0x01, 0x6b,
|
||||
0x00, 0xfc, 0x01, 0x7c, 0x01, 0x7e, 0x02, 0xd9
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_windows_1258[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xac, 0xff, 0xff, 0x20, 0x1a, 0x01, 0x92,
|
||||
0x20, 0x1e, 0x20, 0x26, 0x20, 0x20, 0x20, 0x21, 0x02, 0xc6, 0x20, 0x30,
|
||||
0xff, 0xff, 0x20, 0x39, 0x01, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0x02, 0xdc, 0x21, 0x22, 0xff, 0xff, 0x20, 0x3a,
|
||||
0x01, 0x53, 0xff, 0xff, 0xff, 0xff, 0x01, 0x78, 0x00, 0xa0, 0x00, 0xa1,
|
||||
0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7,
|
||||
0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad,
|
||||
0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3,
|
||||
0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9,
|
||||
0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf,
|
||||
0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x01, 0x02, 0x00, 0xc4, 0x00, 0xc5,
|
||||
0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb,
|
||||
0x03, 0x00, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x01, 0x10, 0x00, 0xd1,
|
||||
0x03, 0x09, 0x00, 0xd3, 0x00, 0xd4, 0x01, 0xa0, 0x00, 0xd6, 0x00, 0xd7,
|
||||
0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, 0x01, 0xaf,
|
||||
0x03, 0x03, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe2, 0x01, 0x03,
|
||||
0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9,
|
||||
0x00, 0xea, 0x00, 0xeb, 0x03, 0x01, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef,
|
||||
0x01, 0x11, 0x00, 0xf1, 0x03, 0x23, 0x00, 0xf3, 0x00, 0xf4, 0x01, 0xa1,
|
||||
0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb,
|
||||
0x00, 0xfc, 0x01, 0xb0, 0x20, 0xab, 0x00, 0xff
|
||||
};
|
||||
@ -1,24 +0,0 @@
|
||||
static const unsigned char map_windows_874[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xac, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x26, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0x20, 0x22,
|
||||
0x20, 0x13, 0x20, 0x14, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xa0, 0x0e, 0x01,
|
||||
0x0e, 0x02, 0x0e, 0x03, 0x0e, 0x04, 0x0e, 0x05, 0x0e, 0x06, 0x0e, 0x07,
|
||||
0x0e, 0x08, 0x0e, 0x09, 0x0e, 0x0a, 0x0e, 0x0b, 0x0e, 0x0c, 0x0e, 0x0d,
|
||||
0x0e, 0x0e, 0x0e, 0x0f, 0x0e, 0x10, 0x0e, 0x11, 0x0e, 0x12, 0x0e, 0x13,
|
||||
0x0e, 0x14, 0x0e, 0x15, 0x0e, 0x16, 0x0e, 0x17, 0x0e, 0x18, 0x0e, 0x19,
|
||||
0x0e, 0x1a, 0x0e, 0x1b, 0x0e, 0x1c, 0x0e, 0x1d, 0x0e, 0x1e, 0x0e, 0x1f,
|
||||
0x0e, 0x20, 0x0e, 0x21, 0x0e, 0x22, 0x0e, 0x23, 0x0e, 0x24, 0x0e, 0x25,
|
||||
0x0e, 0x26, 0x0e, 0x27, 0x0e, 0x28, 0x0e, 0x29, 0x0e, 0x2a, 0x0e, 0x2b,
|
||||
0x0e, 0x2c, 0x0e, 0x2d, 0x0e, 0x2e, 0x0e, 0x2f, 0x0e, 0x30, 0x0e, 0x31,
|
||||
0x0e, 0x32, 0x0e, 0x33, 0x0e, 0x34, 0x0e, 0x35, 0x0e, 0x36, 0x0e, 0x37,
|
||||
0x0e, 0x38, 0x0e, 0x39, 0x0e, 0x3a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x0e, 0x3f, 0x0e, 0x40, 0x0e, 0x41, 0x0e, 0x42, 0x0e, 0x43,
|
||||
0x0e, 0x44, 0x0e, 0x45, 0x0e, 0x46, 0x0e, 0x47, 0x0e, 0x48, 0x0e, 0x49,
|
||||
0x0e, 0x4a, 0x0e, 0x4b, 0x0e, 0x4c, 0x0e, 0x4d, 0x0e, 0x4e, 0x0e, 0x4f,
|
||||
0x0e, 0x50, 0x0e, 0x51, 0x0e, 0x52, 0x0e, 0x53, 0x0e, 0x54, 0x0e, 0x55,
|
||||
0x0e, 0x56, 0x0e, 0x57, 0x0e, 0x58, 0x0e, 0x59, 0x0e, 0x5a, 0x0e, 0x5b,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
@ -1,36 +0,0 @@
|
||||
#ifndef _LIBICONV_H
|
||||
#define _LIBICONV_H 1
|
||||
|
||||
#define _LIBICONV_VERSION 0x010B /* version number: (major<<8) + minor */
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int _libiconv_version; /* Likewise */
|
||||
|
||||
typedef long iconv_t;
|
||||
|
||||
#define iconv_open libiconv_open
|
||||
#define iconv libiconv
|
||||
#define iconv_close libiconv_close
|
||||
|
||||
extern iconv_t
|
||||
iconv_open(const char *tocode, const char *fromcode);
|
||||
|
||||
extern size_t
|
||||
iconv(iconv_t cd, char **inbuf, size_t *inbytesleft,
|
||||
char **outbuf, size_t *outbytesleft);
|
||||
|
||||
extern int
|
||||
iconv_close(iconv_t cd);
|
||||
|
||||
#define libiconv_set_relocation_prefix(...) do {} while(0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LIBICONV_H */
|
||||
@ -1,214 +0,0 @@
|
||||
# iconv.m4 serial 11 (gettext-0.18.1)
|
||||
dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
|
||||
[
|
||||
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
|
||||
dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
|
||||
dnl accordingly.
|
||||
AC_LIB_LINKFLAGS_BODY([iconv])
|
||||
])
|
||||
|
||||
AC_DEFUN([AM_ICONV_LINK],
|
||||
[
|
||||
dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
|
||||
dnl those with the standalone portable GNU libiconv installed).
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
|
||||
dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
|
||||
dnl accordingly.
|
||||
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
|
||||
|
||||
dnl Add $INCICONV to CPPFLAGS before performing the following checks,
|
||||
dnl because if the user has installed libiconv and not disabled its use
|
||||
dnl via --without-libiconv-prefix, he wants to use it. The first
|
||||
dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
|
||||
am_save_CPPFLAGS="$CPPFLAGS"
|
||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
|
||||
|
||||
AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
|
||||
am_cv_func_iconv="no, consider installing GNU libiconv"
|
||||
am_cv_lib_iconv=no
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
[am_cv_func_iconv=yes])
|
||||
if test "$am_cv_func_iconv" != yes; then
|
||||
am_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
[am_cv_lib_iconv=yes]
|
||||
[am_cv_func_iconv=yes])
|
||||
LIBS="$am_save_LIBS"
|
||||
fi
|
||||
])
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
|
||||
dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
|
||||
am_save_LIBS="$LIBS"
|
||||
if test $am_cv_lib_iconv = yes; then
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
fi
|
||||
AC_TRY_RUN([
|
||||
#include <iconv.h>
|
||||
#include <string.h>
|
||||
int main ()
|
||||
{
|
||||
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
|
||||
returns. */
|
||||
{
|
||||
iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
|
||||
if (cd_utf8_to_88591 != (iconv_t)(-1))
|
||||
{
|
||||
static const char input[] = "\342\202\254"; /* EURO SIGN */
|
||||
char buf[10];
|
||||
const char *inptr = input;
|
||||
size_t inbytesleft = strlen (input);
|
||||
char *outptr = buf;
|
||||
size_t outbytesleft = sizeof (buf);
|
||||
size_t res = iconv (cd_utf8_to_88591,
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if (res == 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
/* Test against Solaris 10 bug: Failures are not distinguishable from
|
||||
successful returns. */
|
||||
{
|
||||
iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
|
||||
if (cd_ascii_to_88591 != (iconv_t)(-1))
|
||||
{
|
||||
static const char input[] = "\263";
|
||||
char buf[10];
|
||||
const char *inptr = input;
|
||||
size_t inbytesleft = strlen (input);
|
||||
char *outptr = buf;
|
||||
size_t outbytesleft = sizeof (buf);
|
||||
size_t res = iconv (cd_ascii_to_88591,
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if (res == 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#if 0 /* This bug could be worked around by the caller. */
|
||||
/* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
|
||||
{
|
||||
iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
|
||||
if (cd_88591_to_utf8 != (iconv_t)(-1))
|
||||
{
|
||||
static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
|
||||
char buf[50];
|
||||
const char *inptr = input;
|
||||
size_t inbytesleft = strlen (input);
|
||||
char *outptr = buf;
|
||||
size_t outbytesleft = sizeof (buf);
|
||||
size_t res = iconv (cd_88591_to_utf8,
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if ((int)res > 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
|
||||
provided. */
|
||||
if (/* Try standardized names. */
|
||||
iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
|
||||
/* Try IRIX, OSF/1 names. */
|
||||
&& iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
|
||||
/* Try AIX names. */
|
||||
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
|
||||
/* Try HP-UX names. */
|
||||
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
|
||||
return 1;
|
||||
return 0;
|
||||
}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
|
||||
[case "$host_os" in
|
||||
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
|
||||
*) am_cv_func_iconv_works="guessing yes" ;;
|
||||
esac])
|
||||
LIBS="$am_save_LIBS"
|
||||
])
|
||||
case "$am_cv_func_iconv_works" in
|
||||
*no) am_func_iconv=no am_cv_lib_iconv=no ;;
|
||||
*) am_func_iconv=yes ;;
|
||||
esac
|
||||
else
|
||||
am_func_iconv=no am_cv_lib_iconv=no
|
||||
fi
|
||||
if test "$am_func_iconv" = yes; then
|
||||
AC_DEFINE([HAVE_ICONV], [1],
|
||||
[Define if you have the iconv() function and it works.])
|
||||
fi
|
||||
if test "$am_cv_lib_iconv" = yes; then
|
||||
AC_MSG_CHECKING([how to link with libiconv])
|
||||
AC_MSG_RESULT([$LIBICONV])
|
||||
else
|
||||
dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
|
||||
dnl either.
|
||||
CPPFLAGS="$am_save_CPPFLAGS"
|
||||
LIBICONV=
|
||||
LTLIBICONV=
|
||||
fi
|
||||
AC_SUBST([LIBICONV])
|
||||
AC_SUBST([LTLIBICONV])
|
||||
])
|
||||
|
||||
dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
|
||||
dnl avoid warnings like
|
||||
dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
|
||||
dnl This is tricky because of the way 'aclocal' is implemented:
|
||||
dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
|
||||
dnl Otherwise aclocal's initial scan pass would miss the macro definition.
|
||||
dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
|
||||
dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
|
||||
dnl warnings.
|
||||
m4_define([gl_iconv_AC_DEFUN],
|
||||
m4_version_prereq([2.64],
|
||||
[[AC_DEFUN_ONCE(
|
||||
[$1], [$2])]],
|
||||
[[AC_DEFUN(
|
||||
[$1], [$2])]]))
|
||||
gl_iconv_AC_DEFUN([AM_ICONV],
|
||||
[
|
||||
AM_ICONV_LINK
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
AC_MSG_CHECKING([for iconv declaration])
|
||||
AC_CACHE_VAL([am_cv_proto_iconv], [
|
||||
AC_TRY_COMPILE([
|
||||
#include <stdlib.h>
|
||||
#include <iconv.h>
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||
#else
|
||||
size_t iconv();
|
||||
#endif
|
||||
], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
|
||||
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
|
||||
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
|
||||
AC_MSG_RESULT([
|
||||
$am_cv_proto_iconv])
|
||||
AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
|
||||
[Define as const if the declaration of iconv() needs const.])
|
||||
fi
|
||||
])
|
||||
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wolfssl
|
||||
PKG_VERSION:=5.3.0-stable
|
||||
PKG_VERSION:=5.4.0-stable
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION)
|
||||
PKG_HASH:=1a3bb310dc01d3e73d9ad91b6ea8249d081016f8eef4ae8f21d3421f91ef1de9
|
||||
PKG_HASH:=dc36cc19dad197253e5c2ecaa490c7eef579ad448706e55d73d79396e814098b
|
||||
|
||||
PKG_FIXUP:=libtool libtool-abiver
|
||||
PKG_INSTALL:=1
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/wolfssl/wolfcrypt/settings.h
|
||||
+++ b/wolfssl/wolfcrypt/settings.h
|
||||
@@ -2338,7 +2338,7 @@ extern void uITRON4_free(void *p) ;
|
||||
@@ -2442,7 +2442,7 @@ extern void uITRON4_free(void *p) ;
|
||||
#endif
|
||||
|
||||
/* warning for not using harden build options (default with ./configure) */
|
||||
|
||||
@ -11,7 +11,7 @@ RNG regardless of the built settings for wolfssl.
|
||||
|
||||
--- a/wolfcrypt/src/ecc.c
|
||||
+++ b/wolfcrypt/src/ecc.c
|
||||
@@ -11655,21 +11655,21 @@ void wc_ecc_fp_free(void)
|
||||
@@ -12288,21 +12288,21 @@ void wc_ecc_fp_free(void)
|
||||
|
||||
#endif /* FP_ECC */
|
||||
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
From 9ba77300f9f5dea9f53aed00bf6c33d10b7b2fce Mon Sep 17 00:00:00 2001
|
||||
From: Sean Parkinson <sean@wolfssl.com>
|
||||
Date: Thu, 7 Jul 2022 09:30:48 +1000
|
||||
Subject: [PATCH] AESNI: fix configure to use minimal compiler flags
|
||||
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index df97ac75c..6abb0c744 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -2142,21 +2142,19 @@ then
|
||||
if test "$ENABLED_AESNI" = "yes" || test "$ENABLED_INTELASM" = "yes"
|
||||
then
|
||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_AESNI"
|
||||
- if test "$GCC" = "yes"
|
||||
+ if test "$CC" != "icc"
|
||||
then
|
||||
- # clang needs these flags
|
||||
- if test "$CC" = "clang"
|
||||
- then
|
||||
- AM_CFLAGS="$AM_CFLAGS -maes -mpclmul"
|
||||
- else
|
||||
- # GCC needs these flags, icc doesn't
|
||||
- # opt levels greater than 2 may cause problems on systems w/o
|
||||
- # aesni
|
||||
- if test "$CC" != "icc"
|
||||
- then
|
||||
- AM_CFLAGS="$AM_CFLAGS -maes -msse4 -mpclmul"
|
||||
- fi
|
||||
- fi
|
||||
+ case $host_os in
|
||||
+ mingw*)
|
||||
+ # Windows uses intrinsics for GCM which uses SSE4 instructions.
|
||||
+ # MSVC has own build files.
|
||||
+ AM_CFLAGS="$AM_CFLAGS -maes -msse4 -mpclmul"
|
||||
+ ;;
|
||||
+ *)
|
||||
+ # Intrinsics used in AES_set_decrypt_key (TODO: rework)
|
||||
+ AM_CFLAGS="$AM_CFLAGS -maes"
|
||||
+ ;;
|
||||
+ esac
|
||||
fi
|
||||
AS_IF([test "x$ENABLED_AESGCM" != "xno"],[AM_CCASFLAGS="$AM_CCASFLAGS -DHAVE_AESGCM"])
|
||||
fi
|
||||
@ -15,7 +15,7 @@ PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firewall3.git
|
||||
PKG_SOURCE_DATE:=2022-02-17
|
||||
PKG_SOURCE_VERSION:=4cd7d4f36bea731bf901cb067456f1d460294926
|
||||
PKG_MIRROR_HASH:=307baf09c61ce727b4edb4283144b0d8128ebba34b858cc6389571421f829a24
|
||||
PKG_MIRROR_HASH:=ce9e8ac1bcf22afbb0a80c3da1a8e8e887851299681097e3dfbfc347f2c4c80f
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
|
||||
@ -249,7 +249,7 @@ EOF
|
||||
|
||||
hostapd_common_add_bss_config() {
|
||||
config_add_string 'bssid:macaddr' 'ssid:string'
|
||||
config_add_boolean wds wmm uapsd hidden utf8_ssid
|
||||
config_add_boolean wds wmm uapsd hidden utf8_ssid ppsk
|
||||
|
||||
config_add_int maxassoc max_inactivity
|
||||
config_add_boolean disassoc_low_ack isolate short_preamble skip_inactivity_poll
|
||||
@ -546,7 +546,7 @@ hostapd_set_bss_options() {
|
||||
acct_server acct_secret acct_port acct_interval \
|
||||
bss_load_update_period chan_util_avg_period sae_require_mfp sae_pwe \
|
||||
multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \
|
||||
airtime_bss_weight airtime_bss_limit airtime_sta_weight \
|
||||
ppsk airtime_bss_weight airtime_bss_limit airtime_sta_weight \
|
||||
multicast_to_unicast proxy_arp per_sta_vif \
|
||||
eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id \
|
||||
vendor_elements fils ocv
|
||||
@ -569,6 +569,7 @@ hostapd_set_bss_options() {
|
||||
set_default chan_util_avg_period 600
|
||||
set_default utf8_ssid 1
|
||||
set_default multi_ap 0
|
||||
set_default ppsk 0
|
||||
set_default airtime_bss_weight 0
|
||||
set_default airtime_bss_limit 0
|
||||
set_default eap_server 0
|
||||
@ -656,7 +657,15 @@ hostapd_set_bss_options() {
|
||||
;;
|
||||
psk|sae|psk-sae)
|
||||
json_get_vars key wpa_psk_file
|
||||
if [ ${#key} -eq 64 ]; then
|
||||
if [ "$auth_type" = "psk" ] && [ "$ppsk" -ne 0 ] ; then
|
||||
json_get_vars auth_server auth_secret auth_port
|
||||
set_default auth_port 1812
|
||||
append bss_conf "auth_server_addr=$auth_server" "$N"
|
||||
append bss_conf "auth_server_port=$auth_port" "$N"
|
||||
append bss_conf "auth_server_shared_secret=$auth_secret" "$N"
|
||||
append bss_conf "macaddr_acl=2" "$N"
|
||||
append bss_conf "wpa_psk_radius=2" "$N"
|
||||
elif [ ${#key} -eq 64 ]; then
|
||||
append bss_conf "wpa_psk=$key" "$N"
|
||||
elif [ ${#key} -ge 8 ] && [ ${#key} -le 63 ]; then
|
||||
append bss_conf "wpa_passphrase=$key" "$N"
|
||||
|
||||
@ -7,8 +7,8 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/chunkeey/nu801.git
|
||||
PKG_SOURCE_VERSION:=d9942c0ceb949080b93366a9431028de3608e535
|
||||
PKG_MIRROR_HASH:=859be7dec96d2a0d6ee8b80c6f1a703384940d19caeeb74a4ac0a961b2a985db
|
||||
PKG_SOURCE_VERSION:=f623879a393d0315f29095fe46b19cd2246d10d7
|
||||
PKG_MIRROR_HASH:=db21671a1c14f0bfeb65525cbfd0576d2d5bbebf3901e35e64f9bf92a9a53b0d
|
||||
PKG_MAINTAINER:=Christian Lamparter <chunkeey@gmail.com>
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
@ -20,7 +20,7 @@ define Package/nu801
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
SUBMENU:=Userspace GPIO Drivers
|
||||
DEPENDS:=@TARGET_x86
|
||||
DEPENDS:=@TARGET_x86||@TARGET_bcm53xx
|
||||
KCONFIG:=CONFIG_GPIO_CDEV=y
|
||||
TITLE:=NU801 LED Driver
|
||||
endef
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ubox
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubox.git
|
||||
PKG_SOURCE_DATE:=2022-01-06
|
||||
PKG_SOURCE_VERSION:=b87a4fdca6346a01c19e94fe0461fb9ef7493815
|
||||
PKG_MIRROR_HASH:=4b41596fa00637134b23175a4952de66ff80b2edb956f685347f146d90d910c5
|
||||
PKG_SOURCE_DATE:=2022-07-17
|
||||
PKG_SOURCE_VERSION:=46a33b8be298e1e700e56f05b5ba4f06daf83efa
|
||||
PKG_MIRROR_HASH:=551560cc481dd5d12e1dc81f368af8be29027891ce091ba71fee8fe5d9afcb87
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user