Add FH8833v100 aka FH8633 aka FH8632 ...

pull/244/head
Dmitry Ermakov 2022-06-19 21:29:16 +03:00
parent d57905d535
commit 25cd04ffa1
12 changed files with 127480 additions and 34 deletions

View File

@ -1,4 +1,4 @@
name: "FH8632 "
name: "FH8833V100"
on:
push:
@ -10,7 +10,7 @@ on:
jobs:
build_core:
name: OpenIPC firmware for FH8632
name: OpenIPC firmware for FH8833V100
runs-on: ubuntu-latest
steps:
@ -57,25 +57,25 @@ jobs:
cd $GITHUB_WORKSPACE
make prepare
- name: Build FH8632 firmware
id: build-fh8632-firmware
- name: Build FH8833V100 firmware
id: build-fh8833v100-firmware
continue-on-error: true
run: |
ARCHIVE_FW="${GITHUB_WORKSPACE}/output/images/openipc.fh8632-br.tgz"
ARCHIVE_FW="${GITHUB_WORKSPACE}/output/images/openipc.fh8833v100-br.tgz"
echo "ARCHIVE_FW=$ARCHIVE_FW" >> $GITHUB_ENV
cd $GITHUB_WORKSPACE
make PLATFORM=fullhan BOARD=unknown_unknown_fh8632_openipc all
[[ $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/uImage) -gt 2097152 ]] && echo "TG_NOTIFY=Warning, kernel size exceeded : $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/uImage) vs 2097152... FH8632" >> $GITHUB_ENV && exit 1
[[ $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs) -gt 5242880 ]] && echo "TG_NOTIFY=Warning, rootfs size exceeded - $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs) vs 5242880... FH8632" >> $GITHUB_ENV && exit 1
make PLATFORM=fullhan BOARD=unknown_unknown_fh8833v100_openipc all
[[ $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/uImage) -gt 2097152 ]] && echo "TG_NOTIFY=Warning, kernel size exceeded : $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/uImage) vs 2097152... FH8833V100" >> $GITHUB_ENV && exit 1
[[ $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs) -gt 5242880 ]] && echo "TG_NOTIFY=Warning, rootfs size exceeded - $(stat --printf="%s" ${GITHUB_WORKSPACE}/output/images/rootfs.squashfs) vs 5242880... FH8833V100" >> $GITHUB_ENV && exit 1
cd ${GITHUB_WORKSPACE}/output/images
mv uImage uImage.fh8632
mv rootfs.squashfs rootfs.squashfs.fh8632
md5sum rootfs.squashfs.fh8632 > rootfs.squashfs.fh8632.md5sum
md5sum uImage.fh8632 > uImage.fh8632.md5sum
tar -cvzf $ARCHIVE_FW *fh8632*
mv uImage uImage.fh8833v100
mv rootfs.squashfs rootfs.squashfs.fh8833v100
md5sum rootfs.squashfs.fh8833v100 > rootfs.squashfs.fh8833v100.md5sum
md5sum uImage.fh8833v100 > uImage.fh8833v100.md5sum
tar -cvzf $ARCHIVE_FW *fh8833v100*
- name: Build FH8632 SDK
id: build-fh8632-sdk
- name: Build FH8833V100 SDK
id: build-fh8833v100-sdk
continue-on-error: true
run: |
ARCHIVE_SDK="${GITHUB_WORKSPACE}/output/images/arm-openipc-linux-musleabi_sdk-buildroot.tar.gz"
@ -87,10 +87,10 @@ jobs:
env:
TG_TOKEN: ${{ secrets.TELEGRAM_TOKEN_BOT_OPENIPC }}
TG_CHANNEL: ${{ secrets.TELEGRAM_CHANNEL_OPENIPC_DEV }}
if: steps.build-fh8632-firmware.outcome != 'success' || steps.build-fh8632-sdk.outcome != 'success'
if: steps.build-fh8833v100-firmware.outcome != 'success' || steps.build-fh8833v100-sdk.outcome != 'success'
run: |
TG_OPTIONS="-s --connect-timeout 30 --max-time 30"
TG_NOTIFY="${TG_NOTIFY:=Warning, Buildroot compiling error... FH8632}"
TG_NOTIFY="${TG_NOTIFY:=Warning, Buildroot compiling error... FH8833V100}"
TG_HEADER=$(echo -e "\r\n$TG_NOTIFY \r\n\r\nCommit: $GIT_HASH \r\nBranch: $BRANCH_NAME \r\nTag: $TAG_NAME \r\n\r\n\xE2\x9A\xA0 GitHub Actions")
curl $TG_OPTIONS -H "Content-Type: multipart/form-data" -X POST https://api.telegram.org/bot$TG_TOKEN/sendMessage \
-F chat_id=$TG_CHANNEL -F text="$TG_HEADER"
@ -112,7 +112,7 @@ jobs:
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.ARCHIVE_FW }}
asset_name: "openipc.fh8632-br.tgz"
asset_name: "openipc.fh8833v100-br.tgz"
tag: ${{ env.TAG_NAME }}
overwrite: true
@ -122,7 +122,7 @@ jobs:
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.ARCHIVE_SDK }}
asset_name: "arm-openipc-fh8632-linux-musleabi_sdk-buildroot.tar.gz"
asset_name: "arm-openipc-fh8833v100-linux-musleabi_sdk-buildroot.tar.gz"
tag: ${{ env.TAG_NAME }}
overwrite: true

View File

@ -0,0 +1,2 @@
MEM_START_ADDR=0xa0000000
KERNEL_UPLOAD_ADDR=0xa0008000

View File

@ -25,6 +25,7 @@ CONFIG_VECTORS_BASE=0xffff0000
# CONFIG_ARM_PATCH_PHYS_VIRT is not set
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_HAVE_IRQ_WORK=y
CONFIG_IRQ_WORK=y
#
# General setup
@ -243,6 +244,7 @@ CONFIG_ARCH_FULLHAN=y
# CONFIG_PLAT_SPEAR is not set
# CONFIG_ARCH_VT8500 is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_KEYBOARD_GPIO_POLLED is not set
CONFIG_CPU_FH8833=y
#
@ -252,21 +254,14 @@ CONFIG_CPU_FH8833=y
#
# FullHan Core Type
#
# CONFIG_ARCH_FH8810 is not set
CONFIG_ARCH_FH8833=y
# CONFIG_ARCH_FH8830 is not set
# CONFIG_ARCH_FH8856 is not set
# CONFIG_ARCH_FH8626V100 is not set
# CONFIG_ARCH_WUDANG is not set
# CONFIG_ARCH_ZY2 is not set
#
# FullHan Board Type
#
# CONFIG_USE_PTS_AS_CLOCKSOURCE is not set
CONFIG_USE_PTS_AS_CLOCKSOURCE=y
# CONFIG_FH_SIMPLE_TIMER is not set
CONFIG_MACH_FH8833=y
CONFIG_MACH_FH8833_QFN56=y
# CONFIG_MACH_FH_NAND is not set
# CONFIG_JLINK_DEBUG is not set
@ -312,9 +307,8 @@ CONFIG_ARM_ERRATA_411920=y
#
# Kernel Features
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
@ -645,9 +639,11 @@ CONFIG_MISC_DEVICES=y
# CONFIG_SENSORS_BH1770 is not set
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
# CONFIG_FH_DW_I2S is not set
# CONFIG_FH_I2S_SLAVE is not set
# CONFIG_FH_I2S_MASTER is not set
CONFIG_FH_PINCTRL=y
CONFIG_FH_SADC_V1=y
CONFIG_FH_SADC=y
# CONFIG_FH_FIRMWARE_LOADER is not set
CONFIG_FH_EFUSE=y
CONFIG_FH_CLK_MISC=y
# CONFIG_DS1682 is not set
@ -1236,7 +1232,7 @@ CONFIG_RTC_INTF_DEV=y
#
# on-CPU RTC drivers
#
# CONFIG_RTC_DRV_FH is not set
CONFIG_RTC_DRV_FH=y
CONFIG_DMADEVICES=y
# CONFIG_DMADEVICES_DEBUG is not set
@ -1261,6 +1257,8 @@ CONFIG_DMA_ENGINE=y
CONFIG_CLKDEV_LOOKUP=y
CONFIG_PWM=y
CONFIG_PWM_FULLHAN=y
CONFIG_FH_PWM_NUM=8
CONFIG_PWM_FULLHAN_V20=y
#
# File systems

View File

@ -0,0 +1,40 @@
/*
* board_config.h
*
* Created on: Jan 9, 2017
* Author: duobao
*/
#ifndef BOARD_CONFIG_H_
#define BOARD_CONFIG_H_
/*
* GPIO0 -> IRCUT_ON
* GPIO1 -> IRCUT_OFF
* GPIO2 -> PHY Reset
* GPIO3 -> IR
* GPIO13 -> Sensor Reset
* GPIO14 -> Sensor Power Down
* GPIO55 -> CSN1
*/
#define CONFIG_GPIO_EMACPHY_RESET 2
#define CONFIG_GPIO_EMACPHY_RXDV 41
#define CONFIG_SD_WP_FIXED
#define CONFIG_PINCTRL_SELECT \
"MIPI", "RMII", "UART0", "USB", "DWI2S", \
"I2C0", "SSI0", "SD0_CARD_1BIT", \
"GPIO0", "GPIO1", "GPIO2", "GPIO3", \
"GPIO13", \
\
"GPIO4", "GPIO11", "GPIO5", "GPIO6", "GPIO7", \
"GPIO8", "GPIO9", "GPIO10", "GPIO14", "GPIO19", \
"GPIO20", "GPIO21", "GPIO23", "GPIO28", "GPIO29", \
"GPIO30", "GPIO31", "GPIO32", "GPIO33", "GPIO35", \
"GPIO36", "GPIO37", "GPIO39", "GPIO40", "GPIO44", \
"GPIO45", "GPIO47", "GPIO50", "GPIO51", "GPIO55", \
"GPIO61", \
#endif /* BOARD_CONFIG_H_ */

View File

@ -0,0 +1,65 @@
#ifndef __LINUX_COMPILER_H
#error "Please don't include <linux/compiler-gcc7.h> directly, include <linux/compiler.h> instead."
#endif
#define __used __attribute__((__used__))
#define __must_check __attribute__((warn_unused_result))
#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
/* Mark functions as cold. gcc will assume any path leading to a call
to them will be unlikely. This means a lot of manual unlikely()s
are unnecessary now for any paths leading to the usual suspects
like BUG(), printk(), panic() etc. [but let's keep them for now for
older compilers]
Early snapshots of gcc 4.3 don't support this and we can't detect this
in the preprocessor, but we can live with this because they're unreleased.
Maketime probing would be overkill here.
gcc also has a __attribute__((__hot__)) to move hot functions into
a special section, but I don't see any sense in this right now in
the kernel context */
#define __cold __attribute__((__cold__))
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
#ifndef __CHECKER__
# define __compiletime_warning(message) __attribute__((warning(message)))
# define __compiletime_error(message) __attribute__((error(message)))
#endif /* __CHECKER__ */
/*
* Mark a position in code as unreachable. This can be used to
* suppress control flow warnings after asm blocks that transfer
* control elsewhere.
*
* Early snapshots of gcc 4.5 don't support this and we can't detect
* this in the preprocessor, but we can live with this because they're
* unreleased. Really, we need to have autoconf for the kernel.
*/
#define unreachable() __builtin_unreachable()
/* Mark a function definition as prohibited from being cloned. */
#define __noclone __attribute__((__noclone__))
/*
* Tell the optimizer that something else uses this function or variable.
*/
#define __visible __attribute__((externally_visible))
/*
* GCC 'asm goto' miscompiles certain code sequences:
*
* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
*
* Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
*
* (asm goto is automatically volatile - the naming reflects this.)
*/
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
#define __HAVE_BUILTIN_BSWAP32__
#define __HAVE_BUILTIN_BSWAP64__
#define __HAVE_BUILTIN_BSWAP16__
#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */

View File

@ -0,0 +1,11 @@
--- a/scripts/dtc/dtc-lexer.lex.c_shipped 2015-08-07 22:08:04.000000000 +0300
+++ b/scripts/dtc/dtc-lexer.lex.c_shipped 2021-11-01 22:15:12.347053553 +0300
@@ -637,7 +637,7 @@
#include "srcpos.h"
#include "dtc-parser.tab.h"
-YYLTYPE yylloc;
+extern YYLTYPE yylloc;
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
#define YY_USER_ACTION \

View File

@ -0,0 +1,62 @@
--- linux-3.0.101/arch/arm/boot/Makefile 2013-10-22 11:58:59.000000000 +0400
+++ linux-3.0.101/arch/arm/boot/Makefile 2021-12-15 10:51:15.956535987 +0300
@@ -59,15 +59,19 @@
endif
-quiet_cmd_uimage = UIMAGE $@
- cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
- -C none -a $(LOADADDR) -e $(STARTADDR) \
- -n 'Linux-$(KERNELRELEASE)' -d $< $@
+#quiet_cmd_uimage = UIMAGE $@
+# cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
+# -C none -a $(LOADADDR) -e $(STARTADDR) \
+# -n 'Linux-$(KERNELRELEASE)' -d $< $@
-ifeq ($(CONFIG_ZBOOT_ROM),y)
-$(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
+ifneq ($(LOADADDR),)
+ UIMAGE_LOADADDR=$(LOADADDR)
else
-$(obj)/uImage: LOADADDR=$(ZRELADDR)
+ ifeq ($(CONFIG_ZBOOT_ROM),y)
+ UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
+ else
+ UIMAGE_LOADADDR=$(ZRELADDR)
+ endif
endif
$(obj)/uImage: STARTADDR=$(LOADADDR)
--- linux-3.0.101/scripts/Makefile.lib 2013-10-22 11:58:59.000000000 +0400
+++ linux-3.0.101/scripts/Makefile.lib 2021-12-15 10:53:24.551357718 +0300
@@ -262,6 +262,30 @@
lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
(rm -f $@ ; false)
+# U-Boot mkimage
+# ---------------------------------------------------------------------------
+
+MKIMAGE := $(srctree)/scripts/mkuboot.sh
+
+# SRCARCH just happens to match slightly more than ARCH (on sparc), so reduces
+# the number of overrides in arch makefiles
+UIMAGE_ARCH ?= $(SRCARCH)
+UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
+UIMAGE_OPTS-y ?=
+UIMAGE_TYPE ?= kernel
+UIMAGE_LOADADDR ?= arch_must_set_this
+UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
+UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)'
+UIMAGE_IN ?= $<
+UIMAGE_OUT ?= $@
+
+quiet_cmd_uimage = UIMAGE $(UIMAGE_OUT)
+ cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \
+ -C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \
+ -T $(UIMAGE_TYPE) \
+ -a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
+ -n $(UIMAGE_NAME) -d $(UIMAGE_IN) $(UIMAGE_OUT)
+
# XZ
# ---------------------------------------------------------------------------
# Use xzkern to compress the kernel image and xzmisc to compress other things.

View File

@ -0,0 +1,144 @@
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -721,7 +721,18 @@ err_file:
return retval;
}
-static struct file_operations ptmx_fops;
+static const struct file_operations ptmx_fops =
+{
+ .llseek = no_llseek,
+ .read = tty_read,
+ .write = tty_write,
+ .poll = tty_poll,
+ .unlocked_ioctl = tty_ioctl,
+ .compat_ioctl = tty_compat_ioctl,
+ .open = ptmx_open,
+ .release = tty_release,
+ .fasync = tty_fasync,
+};
static void __init unix98_pty_init(void)
{
@@ -775,9 +786,6 @@ static void __init unix98_pty_init(void)
register_sysctl_table(pty_root_table);
/* Now create the /dev/ptmx special device */
- tty_default_fops(&ptmx_fops);
- ptmx_fops.open = ptmx_open;
-
cdev_init(&ptmx_cdev, &ptmx_fops);
if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
register_chrdev_region(MKDEV(TTYAUX_MAJOR, 2), 1, "/dev/ptmx") < 0)
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -137,21 +137,10 @@ EXPORT_SYMBOL(tty_mutex);
/* Spinlock to protect the tty->tty_files list */
DEFINE_SPINLOCK(tty_files_lock);
-static ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
-static ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
ssize_t redirected_tty_write(struct file *, const char __user *,
size_t, loff_t *);
-static unsigned int tty_poll(struct file *, poll_table *);
static int tty_open(struct inode *, struct file *);
-long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
-#ifdef CONFIG_COMPAT
-static long tty_compat_ioctl(struct file *file, unsigned int cmd,
- unsigned long arg);
-#else
-#define tty_compat_ioctl NULL
-#endif
static int __tty_fasync(int fd, struct file *filp, int on);
-static int tty_fasync(int fd, struct file *filp, int on);
static void release_tty(struct tty_struct *tty, int idx);
static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
static void proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
@@ -962,7 +951,7 @@ static void tty_update_time(struct timespec *time)
* read calls may be outstanding in parallel.
*/
-static ssize_t tty_read(struct file *file, char __user *buf, size_t count,
+ssize_t tty_read(struct file *file, char __user *buf, size_t count,
loff_t *ppos)
{
int i;
@@ -1141,7 +1130,7 @@ void tty_write_message(struct tty_struct *tty, char *msg)
* write method will not be invoked in parallel for each device.
*/
-static ssize_t tty_write(struct file *file, const char __user *buf,
+ssize_t tty_write(struct file *file, const char __user *buf,
size_t count, loff_t *ppos)
{
struct inode *inode = file->f_path.dentry->d_inode;
@@ -2002,7 +1991,7 @@ got_driver:
* may be re-entered freely by other callers.
*/
-static unsigned int tty_poll(struct file *filp, poll_table *wait)
+unsigned int tty_poll(struct file *filp, poll_table *wait)
{
struct tty_struct *tty = file_tty(filp);
struct tty_ldisc *ld;
@@ -2059,7 +2048,7 @@ out:
return retval;
}
-static int tty_fasync(int fd, struct file *filp, int on)
+int tty_fasync(int fd, struct file *filp, int on)
{
int retval;
tty_lock();
@@ -3246,11 +3235,6 @@ struct tty_struct *get_current_tty(void)
}
EXPORT_SYMBOL_GPL(get_current_tty);
-void tty_default_fops(struct file_operations *fops)
-{
- *fops = tty_fops;
-}
-
/*
* Initialize the console device. This is called *early*, so
* we can't necessarily depend on lots of kernel help here.
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -13,6 +13,7 @@
#include <linux/tty_driver.h>
#include <linux/tty_ldisc.h>
#include <linux/mutex.h>
+#include <linux/poll.h>
#include <asm/system.h>
@@ -470,7 +471,6 @@ extern int tty_perform_flush(struct tty_struct *tty, unsigned long arg);
extern dev_t tty_devnum(struct tty_struct *tty);
extern void proc_clear_tty(struct task_struct *p);
extern struct tty_struct *get_current_tty(void);
-extern void tty_default_fops(struct file_operations *fops);
extern struct tty_struct *alloc_tty_struct(void);
extern int tty_alloc_file(struct file *file);
extern void tty_add_file(struct tty_struct *tty, struct file *file);
@@ -482,6 +482,19 @@ extern void deinitialize_tty_struct(struct tty_struct *tty);
extern struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx,
int first_ok);
extern int tty_release(struct inode *inode, struct file *filp);
+extern ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
+extern ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
+extern unsigned int tty_poll(struct file *, poll_table *);
+
+#ifdef CONFIG_COMPAT
+extern long tty_compat_ioctl(struct file *file, unsigned int cmd,
+ unsigned long arg);
+#else
+#define tty_compat_ioctl NULL
+#endif
+extern int tty_fasync(int fd, struct file *filp, int on);
+
+
extern int tty_init_termios(struct tty_struct *tty);
extern struct tty_struct *tty_pair_get_tty(struct tty_struct *tty);

View File

@ -0,0 +1,28 @@
--- a/drivers/net/fh_gmac/fh_gmac_phyt.c
+++ b/drivers/net/fh_gmac/fh_gmac_phyt.c
@@ -83,6 +83,7 @@
if (pGmac->phy_interface == PHY_INTERFACE_MODE_RMII) {
switch (pGmac->phydev->phy_id) {
case FH_GMAC_PHY_RTL8201:
+ case FH_GMAC_PHY_JL1101:
fh_mdio_write(bus, phyid,
gmac_phyt_rtl8201_page_select, 7);
fh_mdio_write(bus, phyid,
@@ -116,6 +117,7 @@
} else if (pGmac->phy_interface == PHY_INTERFACE_MODE_MII) {
switch (pGmac->phydev->phy_id) {
case FH_GMAC_PHY_RTL8201:
+ case FH_GMAC_PHY_JL1101:
fh_mdio_write(bus, phyid,
gmac_phyt_rtl8201_page_select, 7);
fh_mdio_write(bus, phyid,
--- a/drivers/net/fh_gmac/fh_gmac_phyt.h
+++ b/drivers/net/fh_gmac/fh_gmac_phyt.h
@@ -11,6 +11,7 @@
#define FH_GMAC_PHY_IP101G 0x02430C54
#define FH_GMAC_PHY_RTL8201 0x001CC816
#define FH_GMAC_PHY_TI83848 0xFFFFFFFF
+#define FH_GMAC_PHY_JL1101 0x937c4023
enum
{

View File

@ -4,7 +4,7 @@
include/config/auto.conf: ;
endif # $(dot-config)
+export PROJECT_NAME = $(shell grep -e '^CONFIG_MACH_FH.*' .config|sed 's/CONFIG_MACH_\(.*\)=y/\1/'|awk '{print tolower($$0)}')
+export PROJECT_NAME = $(shell grep -e '^CONFIG_MACH_FH.*' .config|head -1|sed 's/CONFIG_MACH_\(.*\)=y/\1/'|awk '{print tolower($$0)}')
+
+PHONY += boardconfig
+boardconfig: