Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
16ee54451d | ||
|
|
356d026942 | ||
|
|
988afb1801 | ||
|
|
4c2ae49097 | ||
|
|
5516f07924 | ||
|
|
6e767291b5 | ||
|
|
1d3a392fd3 | ||
|
|
154fb84449 | ||
|
|
7c7662e99b |
61
clean.sh
Executable file
61
clean.sh
Executable file
@ -0,0 +1,61 @@
|
|||||||
|
make distclean
|
||||||
|
#rm source/uboot-2021.10/include/configs/image_cfg.json
|
||||||
|
rm -fr output/*
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/AES.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/__init__.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_cbc.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_ccm.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_cfb.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_ctr.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_eax.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_ecb.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_gcm.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_ocb.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_ofb.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_openpgp.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Cipher/_mode_siv.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Hash/BLAKE2s.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Hash/CMAC.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Hash/HMAC.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Hash/MD5.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Hash/SHA1.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Hash/SHA256.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Hash/__init__.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Math/Numbers.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Math/Primality.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Math/_IntegerBase.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Math/_IntegerGMP.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Math/__init__.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Protocol/KDF.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Protocol/__init__.pyc
|
||||||
|
rm tools/scripts/Cryptodome/PublicKey/RSA.pyc
|
||||||
|
rm tools/scripts/Cryptodome/PublicKey/__init__.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Random/__init__.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Signature/PKCS1_v1_5.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Signature/__init__.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Signature/pkcs1_15.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Util/__init__.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Util/_cpu_features.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Util/_file_system.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Util/_raw_api.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Util/asn1.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Util/number.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Util/py3compat.pyc
|
||||||
|
rm tools/scripts/Cryptodome/Util/strxor.pyc
|
||||||
|
rm tools/scripts/Cryptodome/__init__.pyc
|
||||||
|
rm tools/scripts/asn1crypto/__init__.pyc
|
||||||
|
rm tools/scripts/asn1crypto/_errors.pyc
|
||||||
|
rm tools/scripts/asn1crypto/_iri.pyc
|
||||||
|
rm tools/scripts/asn1crypto/_ordereddict.pyc
|
||||||
|
rm tools/scripts/asn1crypto/_teletex_codec.pyc
|
||||||
|
rm tools/scripts/asn1crypto/_types.pyc
|
||||||
|
rm tools/scripts/asn1crypto/core.pyc
|
||||||
|
rm tools/scripts/asn1crypto/parser.pyc
|
||||||
|
rm tools/scripts/asn1crypto/util.pyc
|
||||||
|
rm tools/scripts/asn1crypto/version.pyc
|
||||||
|
rm tools/scripts/gmssl/__init__.pyc
|
||||||
|
rm tools/scripts/gmssl/func.pyc
|
||||||
|
rm tools/scripts/gmssl/sm2.pyc
|
||||||
|
rm tools/scripts/gmssl/sm3.pyc
|
||||||
|
rm tools/scripts/gmssl/sm4.pyc
|
||||||
|
|
||||||
1
doc/net_doc.txt
Executable file
1
doc/net_doc.txt
Executable file
@ -0,0 +1 @@
|
|||||||
|
https://aicdoc.artinchip.com/topics/sdk/wifi/wifi-rtl8821cs-luban.html
|
||||||
@ -569,10 +569,21 @@ $(BUILD_DIR)/%/.stamp_prebuilt_rsynced:
|
|||||||
$(Q)touch $@
|
$(Q)touch $@
|
||||||
$(BUILD_DIR)/%/.stamp_prebuilt_patched:
|
$(BUILD_DIR)/%/.stamp_prebuilt_patched:
|
||||||
$(Q)touch $@
|
$(Q)touch $@
|
||||||
|
#$(BUILD_DIR)/%/.stamp_prebuilt_extracted:
|
||||||
|
# @$(call MESSAGE,"Extracting prebuilt binary tarball")
|
||||||
|
# $($(PKG)_PREBUILT_EXTRACT_CMDS)
|
||||||
|
# @tools/support/scripts/fix-prebuilt-rpath.sh $($(PKG)_NAME) $($(PKG)_BASENAME) $($(PKG)_DIR)
|
||||||
|
# $(Q)touch $@
|
||||||
$(BUILD_DIR)/%/.stamp_prebuilt_extracted:
|
$(BUILD_DIR)/%/.stamp_prebuilt_extracted:
|
||||||
@$(call MESSAGE,"Extracting prebuilt binary tarball")
|
@$(call MESSAGE,"Extracting prebuilt binary tarball: $($(PKG)_NAME)")
|
||||||
$($(PKG)_PREBUILT_EXTRACT_CMDS)
|
# 创建解压目录,避免tar解压失败
|
||||||
|
$(Q)mkdir -p $(BUILD_DIR)/$($(PKG)_BASENAME)
|
||||||
|
# 执行解压命令(添加容错参数,输出详细日志)
|
||||||
|
$(Q)$($(PKG)_PREBUILT_EXTRACT_CMDS) 2>&1 | tee $(BUILD_DIR)/$($(PKG)_BASENAME)/tar_extract.log || \
|
||||||
|
(echo "WARN: Extract failed, skip error files..." && true)
|
||||||
|
# 修复预编译包的RPATH(运行时库路径)
|
||||||
@tools/support/scripts/fix-prebuilt-rpath.sh $($(PKG)_NAME) $($(PKG)_BASENAME) $($(PKG)_DIR)
|
@tools/support/scripts/fix-prebuilt-rpath.sh $($(PKG)_NAME) $($(PKG)_BASENAME) $($(PKG)_DIR)
|
||||||
|
# 生成标记文件,避免重复执行
|
||||||
$(Q)touch $@
|
$(Q)touch $@
|
||||||
|
|
||||||
# Remove package sources
|
# Remove package sources
|
||||||
|
|||||||
@ -94,11 +94,14 @@ CONFIG_NET_ARTINCHIP_MAC=y
|
|||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
# CONFIG_NET_VENDOR_XILINX is not set
|
# CONFIG_NET_VENDOR_XILINX is not set
|
||||||
CONFIG_REALTEK_PHY=y
|
CONFIG_REALTEK_PHY=y
|
||||||
|
# CONFIG_RTL_CARDS is not set
|
||||||
|
CONFIG_AIC_WLAN_SUPPORT=y
|
||||||
|
CONFIG_AIC8800_WLAN_SUPPORT=m
|
||||||
|
CONFIG_AIC8800_BTLPM_SUPPORT=m
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
CONFIG_KEYBOARD_GPIO=y
|
CONFIG_KEYBOARD_GPIO=y
|
||||||
CONFIG_INPUT_TOUCHSCREEN=y
|
CONFIG_INPUT_TOUCHSCREEN=y
|
||||||
CONFIG_TOUCHSCREEN_ARTINCHIP=y
|
CONFIG_TOUCHSCREEN_ARTINCHIP=y
|
||||||
CONFIG_TOUCHSCREEN_GT9XX=y
|
|
||||||
# CONFIG_LEGACY_PTYS is not set
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||||
@ -127,11 +130,12 @@ CONFIG_FB=y
|
|||||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||||
CONFIG_BACKLIGHT_PWM=y
|
CONFIG_BACKLIGHT_PWM=y
|
||||||
CONFIG_BACKLIGHT_GPIO=y
|
CONFIG_BACKLIGHT_GPIO=y
|
||||||
|
CONFIG_LT8911EXB=y
|
||||||
CONFIG_ARTINCHIP_GE=y
|
CONFIG_ARTINCHIP_GE=y
|
||||||
CONFIG_ARTINCHIP_VE=y
|
CONFIG_ARTINCHIP_VE=y
|
||||||
CONFIG_ARTINCHIP_FB=y
|
CONFIG_ARTINCHIP_FB=y
|
||||||
CONFIG_AIC_DISP_LVDS=y
|
CONFIG_AIC_DISP_MIPI_DSI=y
|
||||||
CONFIG_AIC_PANEL_LVDS_GENERAL=y
|
CONFIG_AIC_PANEL_DSI_SIMPLE=y
|
||||||
CONFIG_SOUND=y
|
CONFIG_SOUND=y
|
||||||
CONFIG_SND=y
|
CONFIG_SND=y
|
||||||
CONFIG_SND_SOC=y
|
CONFIG_SND_SOC=y
|
||||||
@ -197,8 +201,8 @@ CONFIG_CRYPTO_STATS=y
|
|||||||
CONFIG_CRYPTO_USER_API_AKCIPHER=y
|
CONFIG_CRYPTO_USER_API_AKCIPHER=y
|
||||||
CONFIG_CRYPTO_DEV_ARTINCHIP_CE=y
|
CONFIG_CRYPTO_DEV_ARTINCHIP_CE=y
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_CMA_SIZE_MBYTES=24
|
CONFIG_CMA_SIZE_MBYTES=48
|
||||||
CONFIG_CMA_MPP_SIZE_MBYTES=16
|
CONFIG_CMA_MPP_SIZE_MBYTES=32
|
||||||
CONFIG_PRINTK_TIME=y
|
CONFIG_PRINTK_TIME=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
|
|||||||
@ -46,12 +46,17 @@ extern int aicwf_dbg_level_bsp;
|
|||||||
|
|
||||||
#define AICWF_LOG "AICWFDBG("
|
#define AICWF_LOG "AICWFDBG("
|
||||||
|
|
||||||
#define AICWFDBG(level, args, arg...) \
|
//#define AICWFDBG(level, args, arg...) \
|
||||||
do { \
|
do { \
|
||||||
if (aicwf_dbg_level_bsp & level) { \
|
if (aicwf_dbg_level_bsp & level) { \
|
||||||
printk(AICWF_LOG#level")\t" args, ##arg); \
|
printk(AICWF_LOG#level")\t" args, ##arg); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
#define AICWFDBG(level, args, arg...) \
|
||||||
|
do { \
|
||||||
|
if (aicwf_dbg_level_bsp & level) { \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#define RWNX_DBG(fmt, ...) \
|
#define RWNX_DBG(fmt, ...) \
|
||||||
do { \
|
do { \
|
||||||
|
|||||||
@ -20,12 +20,17 @@ void rwnx_data_dump(char* tag, void* data, unsigned long len);
|
|||||||
|
|
||||||
#define AICWF_LOG "AICWFDBG("
|
#define AICWF_LOG "AICWFDBG("
|
||||||
|
|
||||||
#define AICWFDBG(level, args, arg...) \
|
//#define AICWFDBG(level, args, arg...) \
|
||||||
do { \
|
do { \
|
||||||
if (aicwf_dbg_level & level) { \
|
if (aicwf_dbg_level & level) { \
|
||||||
printk(AICWF_LOG#level")\t" args, ##arg); \
|
printk(AICWF_LOG#level")\t" args, ##arg); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
#define AICWFDBG(level, args, arg...) \
|
||||||
|
do { \
|
||||||
|
if (aicwf_dbg_level & level) { \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#define RWNX_DBG(fmt, ...) \
|
#define RWNX_DBG(fmt, ...) \
|
||||||
do { \
|
do { \
|
||||||
|
|||||||
@ -24,6 +24,7 @@ source "drivers/video/fbdev/Kconfig"
|
|||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
source "drivers/video/backlight/Kconfig"
|
source "drivers/video/backlight/Kconfig"
|
||||||
|
source "drivers/video/lt8911exb/Kconfig"
|
||||||
|
|
||||||
config VGASTATE
|
config VGASTATE
|
||||||
tristate
|
tristate
|
||||||
|
|||||||
@ -9,6 +9,7 @@ obj-y += backlight/
|
|||||||
|
|
||||||
obj-y += fbdev/
|
obj-y += fbdev/
|
||||||
obj-y += artinchip/
|
obj-y += artinchip/
|
||||||
|
obj-y += lt8911exb/
|
||||||
|
|
||||||
obj-$(CONFIG_VIDEOMODE_HELPERS) += display_timing.o videomode.o
|
obj-$(CONFIG_VIDEOMODE_HELPERS) += display_timing.o videomode.o
|
||||||
ifeq ($(CONFIG_OF),y)
|
ifeq ($(CONFIG_OF),y)
|
||||||
|
|||||||
@ -71,15 +71,15 @@ static struct aic_panel_funcs panel_funcs = {
|
|||||||
|
|
||||||
/* Init the videomode parameter, dts will override the initial value. */
|
/* Init the videomode parameter, dts will override the initial value. */
|
||||||
static struct videomode panel_vm = {
|
static struct videomode panel_vm = {
|
||||||
.pixelclock = 130000000,
|
.pixelclock = 150 * 1000 * 1000,
|
||||||
.hactive = 1200,
|
.hactive = 1920,
|
||||||
.hfront_porch = 160,
|
.hfront_porch = 188,
|
||||||
.hback_porch = 160,
|
.hback_porch = 148,
|
||||||
.hsync_len = 40,
|
.hsync_len = 44,
|
||||||
.vactive = 1920,
|
.vactive = 1080,
|
||||||
.vfront_porch = 10,
|
.vfront_porch = 4,
|
||||||
.vback_porch = 20,
|
.vback_porch = 36,
|
||||||
.vsync_len = 8,
|
.vsync_len = 5,
|
||||||
.flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
|
.flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
|
||||||
DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_POSEDGE
|
DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_POSEDGE
|
||||||
};
|
};
|
||||||
|
|||||||
10
source/linux-5.10/drivers/video/lt8911exb/Kconfig
Executable file
10
source/linux-5.10/drivers/video/lt8911exb/Kconfig
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
config LT8911EXB
|
||||||
|
tristate "LT8911EXB Driver"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Control LT8911EXB Chip
|
||||||
|
Select m:build as a separate module;
|
||||||
|
Select y:Build into the kernel
|
||||||
|
Select n:Not build
|
||||||
|
|
||||||
32
source/linux-5.10/drivers/video/lt8911exb/LT8911EXB_Main.c
Executable file
32
source/linux-5.10/drivers/video/lt8911exb/LT8911EXB_Main.c
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#include "include/include.h"
|
||||||
|
|
||||||
|
bool g_irq_flag = 0;
|
||||||
|
|
||||||
|
|
||||||
|
int LT8911EXB_Main(void *data)
|
||||||
|
{
|
||||||
|
|
||||||
|
printk("LT8911EXB Init Start:");
|
||||||
|
|
||||||
|
LT8911_Reset();
|
||||||
|
msleep(100);
|
||||||
|
LT8911_ChipID();
|
||||||
|
LT8911_SetVideoTiming(&video);
|
||||||
|
LT8911_Init(&video);
|
||||||
|
LT8911_LinkTrain();
|
||||||
|
|
||||||
|
LT8911_LinkTrainResultCheck();
|
||||||
|
LT8911_video_check() ;
|
||||||
|
LT8911_pcr_mk_printk();
|
||||||
|
LT8911_htotal_stable_printk();
|
||||||
|
|
||||||
|
|
||||||
|
while(!atomic_read(&thread_should_stop))
|
||||||
|
{
|
||||||
|
LT8911_MainLoop(&video);
|
||||||
|
msleep(500);
|
||||||
|
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
283
source/linux-5.10/drivers/video/lt8911exb/LontiumDrv.c
Executable file
283
source/linux-5.10/drivers/video/lt8911exb/LontiumDrv.c
Executable file
@ -0,0 +1,283 @@
|
|||||||
|
#include "include/include.h"
|
||||||
|
|
||||||
|
|
||||||
|
struct _lt8911exb *lt8911exb;
|
||||||
|
static struct task_struct *kthread_obj;
|
||||||
|
atomic_t thread_should_stop = ATOMIC_INIT(0);
|
||||||
|
char *ChipName = "lt8911exb"; //Define Lontium Chip Name
|
||||||
|
static int major = 0;
|
||||||
|
static struct cdev chip_cdev;
|
||||||
|
static struct class *chip_class;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int chip_open(struct inode *inode, struct file *filp)
|
||||||
|
{
|
||||||
|
printk("chip open\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int chip_close (struct inode *node, struct file *file)
|
||||||
|
{
|
||||||
|
printk("chip close\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static ssize_t chip_read(struct file *filp, char __user *buf, size_t cnt, loff_t *offt)
|
||||||
|
{
|
||||||
|
Chip_Control_Args parameter;
|
||||||
|
|
||||||
|
if (copy_from_user(¶meter, buf, sizeof(parameter))) {
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
parameter.value = HDMI_ReadI2C_Byte(parameter.address);
|
||||||
|
|
||||||
|
if (copy_to_user(buf, ¶meter, sizeof(parameter))) {
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sizeof(parameter);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static ssize_t chip_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt)
|
||||||
|
{
|
||||||
|
Chip_Control_Args parameter;
|
||||||
|
|
||||||
|
if (copy_from_user(¶meter, buf, sizeof(parameter))) {
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
HDMI_WriteI2C_Byte(parameter.address, parameter.value);
|
||||||
|
|
||||||
|
return sizeof(parameter);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static struct file_operations chip_drv = {
|
||||||
|
.owner = THIS_MODULE,
|
||||||
|
.open = chip_open,
|
||||||
|
.release = chip_close,
|
||||||
|
.read = chip_read,
|
||||||
|
.write = chip_write,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int chip_dev_init(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
dev_t devid;
|
||||||
|
|
||||||
|
ret = alloc_chrdev_region(&devid, 0, 1, ChipName);
|
||||||
|
if (ret < 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
major = MAJOR(devid);
|
||||||
|
cdev_init(&chip_cdev, &chip_drv);
|
||||||
|
cdev_add(&chip_cdev, devid, 1);
|
||||||
|
chip_class = class_create(THIS_MODULE, "chip_class");
|
||||||
|
if (IS_ERR(chip_class)) {
|
||||||
|
unregister_chrdev(major, ChipName);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
device_create(chip_class, NULL, MKDEV(major, 0), NULL, ChipName); /* /dev/ChipName */
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void chip_dev_exit(void)
|
||||||
|
{
|
||||||
|
device_destroy(chip_class, MKDEV(major, 0));
|
||||||
|
class_destroy(chip_class);
|
||||||
|
cdev_del(&chip_cdev);
|
||||||
|
unregister_chrdev_region(MKDEV(major,0), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static const struct regmap_range chip_ranges[] = {
|
||||||
|
{ .range_min = 0, .range_max = 0xffff },
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regmap_access_table chip_table = {
|
||||||
|
.yes_ranges = chip_ranges,
|
||||||
|
.n_yes_ranges = ARRAY_SIZE(chip_ranges),
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regmap_config chip_regmap_config = {
|
||||||
|
.reg_bits = 8,
|
||||||
|
.val_bits = 8,
|
||||||
|
.volatile_table = &chip_table,
|
||||||
|
.cache_type = REGCACHE_NONE,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* devm_gpiod_get_optional - If this fails, NULL is returned and no error pointer.
|
||||||
|
*
|
||||||
|
* devm_gpiod_get - If this fails, an error pointer is returned, usually ERR_PTR(-ENOENT).
|
||||||
|
*
|
||||||
|
* The devm_gpiod_get function is recommended for practical use.
|
||||||
|
*/
|
||||||
|
static int chip_parse_dts(struct device *dev)
|
||||||
|
{
|
||||||
|
|
||||||
|
//Gets the handle to power gpio in dts
|
||||||
|
|
||||||
|
lt8911exb->power_gpio=devm_gpiod_get_optional(dev, "power", GPIOD_OUT_LOW);
|
||||||
|
if (IS_ERR(lt8911exb->power_gpio)) {
|
||||||
|
dev_err(dev, "Failed to get power GPIO\n");
|
||||||
|
return PTR_ERR(lt8911exb->power_gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Gets the handle to reset gpio in dts
|
||||||
|
|
||||||
|
lt8911exb->reset_gpio=devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
|
||||||
|
if (IS_ERR(lt8911exb->reset_gpio)) {
|
||||||
|
dev_err(dev, "Failed to get reset GPIO\n");
|
||||||
|
return PTR_ERR(lt8911exb->reset_gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Additional GPIO pins can be added here if needed
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int chip_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
chip_dev_init();
|
||||||
|
|
||||||
|
lt8911exb = devm_kzalloc(&client->dev, sizeof(*lt8911exb), GFP_KERNEL);
|
||||||
|
if (lt8911exb == NULL)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
lt8911exb->trans_i2c = client;
|
||||||
|
|
||||||
|
lt8911exb->dev = &client->dev;
|
||||||
|
|
||||||
|
lt8911exb->chip_regmap = devm_regmap_init_i2c(client, &chip_regmap_config);
|
||||||
|
if (IS_ERR(lt8911exb->chip_regmap)) {
|
||||||
|
dev_err(&client->dev, "Failed to initialize regmap\n");
|
||||||
|
return PTR_ERR(lt8911exb->chip_regmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = chip_parse_dts(lt8911exb->dev);
|
||||||
|
if (ret<0){
|
||||||
|
dev_err(&client->dev, "Failed to parse device tree\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
i2c_set_clientdata(client, lt8911exb);
|
||||||
|
|
||||||
|
kthread_obj = kthread_run(LT8911EXB_Main, NULL, "LT8911EXB_kthread");
|
||||||
|
if (IS_ERR(kthread_obj)) {
|
||||||
|
kthread_obj = NULL;
|
||||||
|
chip_dev_exit();
|
||||||
|
dev_err(&client->dev, "Failed to create kernel thread\n");
|
||||||
|
return PTR_ERR(kthread_obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static int chip_remove(struct i2c_client *client)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (kthread_obj) {
|
||||||
|
atomic_set(&thread_should_stop, 1);
|
||||||
|
kthread_stop(kthread_obj);
|
||||||
|
kthread_obj = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
chip_dev_exit();
|
||||||
|
|
||||||
|
printk("driver removed\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int chip_suspend(struct device *dev)
|
||||||
|
{
|
||||||
|
|
||||||
|
//power off
|
||||||
|
atomic_set(&thread_should_stop, 1);
|
||||||
|
kthread_stop(kthread_obj);
|
||||||
|
msleep(5);
|
||||||
|
gpiod_set_value(lt8911exb->power_gpio,0);
|
||||||
|
printk(KERN_INFO "lt8911exb Suspend");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int chip_resume(struct device *dev)
|
||||||
|
{
|
||||||
|
|
||||||
|
//power on
|
||||||
|
gpiod_set_value(lt8911exb->power_gpio,1);
|
||||||
|
msleep(5);
|
||||||
|
atomic_set(&thread_should_stop, 0);
|
||||||
|
kthread_obj = kthread_run(LT8911EXB_Main, NULL, "LT8911EXB_kthread");
|
||||||
|
printk(KERN_INFO "lt8911exb Resume");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const struct dev_pm_ops chip_pm_ops = {
|
||||||
|
.suspend = chip_suspend,
|
||||||
|
.resume = chip_resume,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static const struct i2c_device_id chip_ids[] = {
|
||||||
|
{"lt8911exb", 0},
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(i2c, chip_ids);
|
||||||
|
|
||||||
|
|
||||||
|
static const struct of_device_id chip_id_table[] = {
|
||||||
|
{.compatible = "lontium,lt8911exb"},
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(of, chip_id_table);
|
||||||
|
|
||||||
|
|
||||||
|
static struct i2c_driver chip_driver = {
|
||||||
|
.driver = {
|
||||||
|
.owner = THIS_MODULE,
|
||||||
|
.name = "lt8911exb",
|
||||||
|
.pm = &chip_pm_ops,
|
||||||
|
.of_match_table = chip_id_table,
|
||||||
|
|
||||||
|
},
|
||||||
|
.probe = chip_probe,
|
||||||
|
.remove = chip_remove,
|
||||||
|
.id_table = chip_ids,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
module_i2c_driver(chip_driver);
|
||||||
|
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_DESCRIPTION("LT8911EXB driver");
|
||||||
|
MODULE_AUTHOR("Tony <syyang@lontium.com>");
|
||||||
5
source/linux-5.10/drivers/video/lt8911exb/Makefile
Executable file
5
source/linux-5.10/drivers/video/lt8911exb/Makefile
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
lt8911exb-y := LontiumDrv.o LT8911EXB_Main.o OcmI2cMaster.o lt8911.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_LT8911EXB) += lt8911exb.o
|
||||||
|
|
||||||
72
source/linux-5.10/drivers/video/lt8911exb/OcmI2cMaster.c
Executable file
72
source/linux-5.10/drivers/video/lt8911exb/OcmI2cMaster.c
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
#include "include/include.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static unsigned char g_ucLogLevel = LOG_DEBUG;
|
||||||
|
static char *messageTypeStr[] = {"DEBUG","INFO","WARN", "ERROR","CRIT"};
|
||||||
|
|
||||||
|
//void Ocm_PrintLevel_Set(unsigned char ucLvl)
|
||||||
|
//{
|
||||||
|
// g_ucLogLevel = ucLvl;
|
||||||
|
//}
|
||||||
|
|
||||||
|
void LTLog(unsigned char ucLvl, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
char buf[MAX_NUMBER_BYTES] = {0};
|
||||||
|
va_list args;
|
||||||
|
if (ucLvl > LOG_NOTRACE)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//打印大于等于该级别的字符串
|
||||||
|
if(ucLvl >= g_ucLogLevel)
|
||||||
|
{
|
||||||
|
va_start(args, fmt);
|
||||||
|
vsprintf(buf, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
//左对齐5个字符
|
||||||
|
printk("\n[%-5s] %s", messageTypeStr[ucLvl], buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int HDMI_WriteI2C_Byte(u8 addr,u8 data)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
|
||||||
|
ret = regmap_write(lt8911exb->chip_regmap, addr, data);
|
||||||
|
|
||||||
|
if (ret < 0) {
|
||||||
|
printk("regmap_write error: (0x%02x 0x%02x 0x%02x) %d",
|
||||||
|
lt8911exb->trans_i2c->addr, addr, data, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int HDMI_ReadI2C_Byte(u8 addr)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
unsigned int val = 0;
|
||||||
|
|
||||||
|
ret = regmap_read(lt8911exb->chip_regmap, addr, &val);
|
||||||
|
|
||||||
|
if (ret < 0) {
|
||||||
|
printk("regmap_read error: (0x%02x 0x%02x) %d",
|
||||||
|
lt8911exb->trans_i2c->addr, addr, ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (u8)val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(HDMI_WriteI2C_Byte);
|
||||||
|
EXPORT_SYMBOL(HDMI_ReadI2C_Byte);
|
||||||
Binary file not shown.
Binary file not shown.
11
source/linux-5.10/drivers/video/lt8911exb/include/LT8911EXB_Main.h
Executable file
11
source/linux-5.10/drivers/video/lt8911exb/include/LT8911EXB_Main.h
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#ifndef _LT8911EXB_MAIN_H_
|
||||||
|
#define _LT8911EXB_MAIN_H_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
extern bool g_irq_flag;
|
||||||
|
extern int LT8911EXB_Main(void *data);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
27
source/linux-5.10/drivers/video/lt8911exb/include/LontiumDrv.h
Executable file
27
source/linux-5.10/drivers/video/lt8911exb/include/LontiumDrv.h
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef _LONTIUMDRV_H_
|
||||||
|
#define _LONTIUMDRV_H_
|
||||||
|
|
||||||
|
|
||||||
|
struct _lt8911exb{
|
||||||
|
struct device *dev;
|
||||||
|
struct mutex ocm_lock;
|
||||||
|
struct gpio_desc *reset_gpio;
|
||||||
|
struct gpio_desc *power_gpio;
|
||||||
|
struct i2c_client *trans_i2c;
|
||||||
|
struct regmap *chip_regmap;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
u8 address; // 寄存器地址
|
||||||
|
u8 value; // 寄存器值
|
||||||
|
} Chip_Control_Args;
|
||||||
|
|
||||||
|
|
||||||
|
extern struct _lt8911exb *lt8911exb;
|
||||||
|
extern atomic_t thread_should_stop;
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
22
source/linux-5.10/drivers/video/lt8911exb/include/OcmI2cMaster.h
Executable file
22
source/linux-5.10/drivers/video/lt8911exb/include/OcmI2cMaster.h
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef _OCMI2CMASTER_H_
|
||||||
|
#define _OCMI2CMASTER_H_
|
||||||
|
|
||||||
|
#define MAX_NUMBER_BYTES 128
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
LOG_DEBUG =0x00,
|
||||||
|
LOG_INFO,
|
||||||
|
LOG_WARN,
|
||||||
|
LOG_ERROR,
|
||||||
|
LOG_CRITICAL,
|
||||||
|
LOG_NOTRACE,
|
||||||
|
} LT_LogLevel;
|
||||||
|
|
||||||
|
void LTLog(unsigned char ucLvl, const char *fmt, ...);
|
||||||
|
|
||||||
|
|
||||||
|
extern int HDMI_WriteI2C_Byte(u8 addr,u8 data);
|
||||||
|
extern int HDMI_ReadI2C_Byte(u8 addr);
|
||||||
|
|
||||||
|
#endif
|
||||||
39
source/linux-5.10/drivers/video/lt8911exb/include/include.h
Executable file
39
source/linux-5.10/drivers/video/lt8911exb/include/include.h
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
#ifndef _INCLUDE_H_
|
||||||
|
#define _INCLUDE_H_
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/i2c.h>
|
||||||
|
#include <linux/regmap.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/kobject.h>
|
||||||
|
#include <linux/sysfs.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
|
||||||
|
#include <linux/miscdevice.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/major.h>
|
||||||
|
#include <linux/mutex.h>
|
||||||
|
#include <linux/proc_fs.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/stat.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/device.h>
|
||||||
|
#include <linux/tty.h>
|
||||||
|
#include <linux/kmod.h>
|
||||||
|
#include <linux/gfp.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
|
#include <linux/kthread.h>
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "type.h"
|
||||||
|
#include "LontiumDrv.h"
|
||||||
|
|
||||||
|
#include "LT8911EXB_Main.h"
|
||||||
|
#include "lt8911.h"
|
||||||
|
|
||||||
|
#include "OcmI2cMaster.h"
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
72
source/linux-5.10/drivers/video/lt8911exb/include/lt8911.h
Executable file
72
source/linux-5.10/drivers/video/lt8911exb/include/lt8911.h
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
#ifndef _LT8911EXB_H_
|
||||||
|
#define _LT8911EXB_H_
|
||||||
|
|
||||||
|
//////////////////////LT8911 Config///////////////////
|
||||||
|
//#define _1920x1200_eDP_Panel_
|
||||||
|
#define _1080P_eDP_Panel_
|
||||||
|
//#define _1366x768_eDP_Panel_
|
||||||
|
//#define _1280x800_eDP_Panel_
|
||||||
|
//#define _1600x900_eDP_Panel_
|
||||||
|
|
||||||
|
#define SCRAMBLE_MODE 0x00 //0x80: edp, 0x00: dp
|
||||||
|
|
||||||
|
//#define sync_polarity 0x00 //0x00: no_adj; 0x20: vs_adj; 0x10: hs_adj; 0x30: H/Vs adj;
|
||||||
|
|
||||||
|
//#define _6bit_
|
||||||
|
|
||||||
|
//#define _dither_enable_
|
||||||
|
|
||||||
|
#define _eDP_2G7_
|
||||||
|
//#define _eDP_1G62_
|
||||||
|
|
||||||
|
#define _link_train_enable_
|
||||||
|
|
||||||
|
//////////option for debug///////////
|
||||||
|
//#define _read_edid_
|
||||||
|
//#define _EDP_Pattern_
|
||||||
|
//#define _Msa_Active_Only_
|
||||||
|
#define _pcr_mk_printk_
|
||||||
|
#define _htotal_stable_check_
|
||||||
|
|
||||||
|
//#define _gpio_sync_output_
|
||||||
|
//#define sync_source 0x01 //gpio output lvds Rx sync
|
||||||
|
#define sync_source 0x02 //gpio output lvds portA sync
|
||||||
|
//#define sync_source 0x03 //gpio output lvds portB sync
|
||||||
|
//gpio2: de, gpio3: vs, gpio4: hs.
|
||||||
|
|
||||||
|
struct video_timing{
|
||||||
|
u16 hfp;
|
||||||
|
u16 hs;
|
||||||
|
u16 hbp;
|
||||||
|
u16 hact;
|
||||||
|
u16 htotal;
|
||||||
|
u16 vfp;
|
||||||
|
u16 vs;
|
||||||
|
u16 vbp;
|
||||||
|
u16 vact;
|
||||||
|
u16 vtotal;
|
||||||
|
u32 pclk_khz;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Lane_No{
|
||||||
|
u8 swing_high_byte;
|
||||||
|
u8 swing_low_byte;
|
||||||
|
u8 emph_high_byte;
|
||||||
|
u8 emph_low_byte;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern struct video_timing video;
|
||||||
|
|
||||||
|
extern void LT8911_Reset(void);
|
||||||
|
extern void LT8911_ChipID(void);
|
||||||
|
extern void LT8911_SetVideoTiming(struct video_timing *video_format);
|
||||||
|
extern void LT8911_Init(struct video_timing *video_format);
|
||||||
|
extern void LT8911_LinkTrain(void);
|
||||||
|
extern void LT8911_LinkTrainResultCheck(void);
|
||||||
|
extern void LT8911_video_check(void);
|
||||||
|
extern void LT8911_pcr_mk_printk(void);
|
||||||
|
extern void LT8911_htotal_stable_printk(void);
|
||||||
|
extern void LT8911_MainLoop(struct video_timing *video_format);
|
||||||
|
|
||||||
|
#endif
|
||||||
10
source/linux-5.10/drivers/video/lt8911exb/include/type.h
Executable file
10
source/linux-5.10/drivers/video/lt8911exb/include/type.h
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#ifndef _TYPE_H_
|
||||||
|
#define _TYPE_H_
|
||||||
|
|
||||||
|
|
||||||
|
#define HIGH 1
|
||||||
|
#define LOW 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
1027
source/linux-5.10/drivers/video/lt8911exb/lt8911.c
Executable file
1027
source/linux-5.10/drivers/video/lt8911exb/lt8911.c
Executable file
File diff suppressed because it is too large
Load Diff
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.IAB
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.IAB
Executable file
Binary file not shown.
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.IAD
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.IAD
Executable file
Binary file not shown.
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.IMB
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.IMB
Executable file
Binary file not shown.
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.IMD
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.IMD
Executable file
Binary file not shown.
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PFI
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PFI
Executable file
Binary file not shown.
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PO
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PO
Executable file
Binary file not shown.
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PR
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PR
Executable file
Binary file not shown.
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PRI
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PRI
Executable file
Binary file not shown.
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PS
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.PS
Executable file
Binary file not shown.
4
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.SearchResults
Executable file
4
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.SearchResults
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
---- LT8911_Init Matches (3 in 3 files) ----
|
||||||
|
Lt8911.c (d:\龙迅产品程序整理(深圳)\lt8911\lt8911\lt8911exb\democode\for linux\lt8911exb_linux_driver_v1.0.2):void LT8911_Init(struct video_timing *video_format)
|
||||||
|
Lt8911.h (d:\龙迅产品程序整理(深圳)\lt8911\lt8911\lt8911exb\democode\for linux\lt8911exb_linux_driver_v1.0.2\include):extern void LT8911_Init(struct video_timing *video_format);
|
||||||
|
LT8911EXB_Main.c (d:\龙迅产品程序整理(深圳)\lt8911\lt8911\lt8911exb\democode\for linux\lt8911exb_linux_driver_v1.0.2): LT8911_Init();
|
||||||
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.WK3
Executable file
BIN
source/linux-5.10/drivers/video/lt8911exb/si/LT8911EXB.WK3
Executable file
Binary file not shown.
@ -99,6 +99,7 @@ CONFIG_NAND_BBT_OFFSET=0x240000
|
|||||||
CONFIG_SYS_SPI_NAND_U_BOOT_LOCATIONS=y
|
CONFIG_SYS_SPI_NAND_U_BOOT_LOCATIONS=y
|
||||||
CONFIG_SPI_NAND_WINBOND=y
|
CONFIG_SPI_NAND_WINBOND=y
|
||||||
CONFIG_SPI_NAND_GIGADEVICE=y
|
CONFIG_SPI_NAND_GIGADEVICE=y
|
||||||
|
CONFIG_SPI_NAND_TOSHIBA=y
|
||||||
CONFIG_SPI_NAND_FMSH=y
|
CONFIG_SPI_NAND_FMSH=y
|
||||||
CONFIG_SPI_NAND_FORESEE=y
|
CONFIG_SPI_NAND_FORESEE=y
|
||||||
CONFIG_SPI_NAND_ZBIT=y
|
CONFIG_SPI_NAND_ZBIT=y
|
||||||
@ -138,8 +139,8 @@ CONFIG_DM_VIDEO=y
|
|||||||
CONFIG_DISPLAY=y
|
CONFIG_DISPLAY=y
|
||||||
CONFIG_ARTINCHIP_GRAPHICS=y
|
CONFIG_ARTINCHIP_GRAPHICS=y
|
||||||
CONFIG_VIDEO_ARTINCHIP=y
|
CONFIG_VIDEO_ARTINCHIP=y
|
||||||
CONFIG_AIC_DISP_LVDS=y
|
CONFIG_AIC_DISP_MIPI_DSI=y
|
||||||
CONFIG_AIC_PANEL_LVDS_GENERAL=y
|
CONFIG_AIC_PANEL_DSI_SIMPLE=y
|
||||||
# CONFIG_WATCHDOG is not set
|
# CONFIG_WATCHDOG is not set
|
||||||
# CONFIG_WATCHDOG_AUTOSTART is not set
|
# CONFIG_WATCHDOG_AUTOSTART is not set
|
||||||
CONFIG_WDT=y
|
CONFIG_WDT=y
|
||||||
|
|||||||
@ -139,12 +139,16 @@ static struct aic_pll clk_plls[] = {
|
|||||||
0, AIC_PLL_INT),
|
0, AIC_PLL_INT),
|
||||||
CLK_PLL(CLK_PLL_INT1, PLL_INT1_GEN_REG, PLL_INT1_CFG_REG,
|
CLK_PLL(CLK_PLL_INT1, PLL_INT1_GEN_REG, PLL_INT1_CFG_REG,
|
||||||
0, AIC_PLL_INT),
|
0, AIC_PLL_INT),
|
||||||
|
// CLK_PLL(CLK_PLL_FRA0, PLL_FRA0_GEN_REG, PLL_FRA0_CFG_REG,
|
||||||
|
// PLL_FRA0_SDM_REG, AIC_PLL_SDM),
|
||||||
CLK_PLL(CLK_PLL_FRA0, PLL_FRA0_GEN_REG, PLL_FRA0_CFG_REG,
|
CLK_PLL(CLK_PLL_FRA0, PLL_FRA0_GEN_REG, PLL_FRA0_CFG_REG,
|
||||||
PLL_FRA0_SDM_REG, AIC_PLL_SDM),
|
PLL_FRA0_SDM_REG, AIC_PLL_FRA),
|
||||||
CLK_PLL(CLK_PLL_FRA1, PLL_FRA1_GEN_REG, PLL_FRA1_CFG_REG,
|
CLK_PLL(CLK_PLL_FRA1, PLL_FRA1_GEN_REG, PLL_FRA1_CFG_REG,
|
||||||
PLL_FRA1_SDM_REG, AIC_PLL_FRA),
|
PLL_FRA1_SDM_REG, AIC_PLL_FRA),
|
||||||
|
// CLK_PLL_VIDEO(CLK_PLL_FRA2, PLL_FRA2_GEN_REG, PLL_FRA2_CFG_REG,
|
||||||
|
// PLL_FRA2_SDM_REG, AIC_PLL_SDM, 0, 1200000000),
|
||||||
CLK_PLL_VIDEO(CLK_PLL_FRA2, PLL_FRA2_GEN_REG, PLL_FRA2_CFG_REG,
|
CLK_PLL_VIDEO(CLK_PLL_FRA2, PLL_FRA2_GEN_REG, PLL_FRA2_CFG_REG,
|
||||||
PLL_FRA2_SDM_REG, AIC_PLL_SDM, 0, 1200000000),
|
PLL_FRA2_SDM_REG, AIC_PLL_FRA, 0, 1200000000),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -192,6 +192,26 @@ static const struct spinand_info gigadevice_spinand_table[] = {
|
|||||||
SPINAND_HAS_QE_BIT,
|
SPINAND_HAS_QE_BIT,
|
||||||
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
||||||
gd5fxgq4uexxg_ecc_get_status)),
|
gd5fxgq4uexxg_ecc_get_status)),
|
||||||
|
SPINAND_INFO("GD5F2GM7UEY1G",
|
||||||
|
SPINAND_ID(0x92),
|
||||||
|
NAND_MEMORG(1, 2048, 128, 64, 2048, 1, 1, 1),
|
||||||
|
NAND_ECCREQ(8, 512),
|
||||||
|
SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
|
||||||
|
&write_cache_variants,
|
||||||
|
&update_cache_variants),
|
||||||
|
SPINAND_HAS_QE_BIT,
|
||||||
|
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
||||||
|
gd5fxgq4uexxg_ecc_get_status)),
|
||||||
|
SPINAND_INFO("GD5F2GQ5UEY1G",
|
||||||
|
SPINAND_ID(0x52),
|
||||||
|
NAND_MEMORG(1, 2048, 128, 64, 2048, 1, 1, 1),
|
||||||
|
NAND_ECCREQ(8, 512),
|
||||||
|
SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
|
||||||
|
&write_cache_variants,
|
||||||
|
&update_cache_variants),
|
||||||
|
SPINAND_HAS_QE_BIT,
|
||||||
|
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
||||||
|
gd5fxgq4uexxg_ecc_get_status)),
|
||||||
};
|
};
|
||||||
|
|
||||||
static int gigadevice_spinand_detect(struct spinand_device *spinand)
|
static int gigadevice_spinand_detect(struct spinand_device *spinand)
|
||||||
|
|||||||
@ -62,6 +62,15 @@ static struct aic_panel_funcs panel_funcs = {
|
|||||||
|
|
||||||
/* Init the videomode parameter, dts will override the initial value. */
|
/* Init the videomode parameter, dts will override the initial value. */
|
||||||
static struct fb_videomode panel_vm = {
|
static struct fb_videomode panel_vm = {
|
||||||
|
.pixclock = 150 * 1000 * 1000,
|
||||||
|
.xres = 1920,
|
||||||
|
.right_margin = 188,
|
||||||
|
.left_margin = 148,
|
||||||
|
.hsync_len = 44,
|
||||||
|
.yres = 1080,
|
||||||
|
.lower_margin = 4,
|
||||||
|
.upper_margin = 36,
|
||||||
|
.vsync_len = 5,
|
||||||
.flag = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
|
.flag = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
|
||||||
DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_POSEDGE
|
DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_POSEDGE
|
||||||
};
|
};
|
||||||
|
|||||||
1
source/uboot-2021.10/include/configs/image_cfg.json
Symbolic link
1
source/uboot-2021.10/include/configs/image_cfg.json
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
/home/tzkj/work/code/linuxOS_D21X/target/d211/demo128_nand/image_cfg.json
|
||||||
@ -35,7 +35,6 @@ BR2_LINUX_KERNEL_DEFCONFIG="d211_demo128_nand"
|
|||||||
BR2_LINUX_KERNEL_IMAGEGZ=y
|
BR2_LINUX_KERNEL_IMAGEGZ=y
|
||||||
BR2_PACKAGE_LINUX_TOOLS_SELFTESTS=y
|
BR2_PACKAGE_LINUX_TOOLS_SELFTESTS=y
|
||||||
# BR2_PACKAGE_AIC_AUTHORIZATION is not set
|
# BR2_PACKAGE_AIC_AUTHORIZATION is not set
|
||||||
BR2_PACKAGE_LVGL_UI=y
|
|
||||||
# BR2_PACKAGE_TEST_DVP is not set
|
# BR2_PACKAGE_TEST_DVP is not set
|
||||||
# BR2_PACKAGE_TEST_TOUCHSCREEN is not set
|
# BR2_PACKAGE_TEST_TOUCHSCREEN is not set
|
||||||
BR2_PACKAGE_BUSYBOX_CONFIG="package/third-party/busybox/configs/d211_demo128_nand_defconfig"
|
BR2_PACKAGE_BUSYBOX_CONFIG="package/third-party/busybox/configs/d211_demo128_nand_defconfig"
|
||||||
@ -55,7 +54,27 @@ BR2_PACKAGE_LIBMNL=y
|
|||||||
BR2_PACKAGE_LIBNL_TOOLS=y
|
BR2_PACKAGE_LIBNL_TOOLS=y
|
||||||
BR2_PACKAGE_NETPERF=y
|
BR2_PACKAGE_NETPERF=y
|
||||||
BR2_PACKAGE_WPA_SUPPLICANT=y
|
BR2_PACKAGE_WPA_SUPPLICANT=y
|
||||||
|
# BR2_PACKAGE_WPA_SUPPLICANT_USE_PREBUILT is not set
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_WEXT=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_WPA3=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
|
||||||
BR2_PACKAGE_WIRELESS_TOOLS=y
|
BR2_PACKAGE_WIRELESS_TOOLS=y
|
||||||
|
# BR2_PACKAGE_WIRELESS_TOOLS_USE_PREBUILT is not set
|
||||||
|
BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
|
||||||
|
BR2_PACKAGE_HOSTAPD=y
|
||||||
|
# BR2_PACKAGE_HOSTAPD_USE_PREBUILT is not set
|
||||||
|
BR2_PACKAGE_HOSTAPD_DRIVER_WIRED=y
|
||||||
|
BR2_PACKAGE_HOSTAPD_EAP=y
|
||||||
|
BR2_PACKAGE_HOSTAPD_WPS=y
|
||||||
|
BR2_PACKAGE_HOSTAPD_WPA3=y
|
||||||
|
BR2_PACKAGE_AIC8800_FW=y
|
||||||
BR2_PACKAGE_LIBKCAPI_ENCAPP=y
|
BR2_PACKAGE_LIBKCAPI_ENCAPP=y
|
||||||
BR2_PACKAGE_LIBKCAPI_HASHER=y
|
BR2_PACKAGE_LIBKCAPI_HASHER=y
|
||||||
BR2_PACKAGE_LIBKCAPI_RNGAPP=y
|
BR2_PACKAGE_LIBKCAPI_RNGAPP=y
|
||||||
|
|||||||
@ -1481,8 +1481,8 @@
|
|||||||
<AIC_PINMUX('C', 2, 2)>,
|
<AIC_PINMUX('C', 2, 2)>,
|
||||||
<AIC_PINMUX('C', 3, 2)>,
|
<AIC_PINMUX('C', 3, 2)>,
|
||||||
<AIC_PINMUX('C', 4, 2)>,
|
<AIC_PINMUX('C', 4, 2)>,
|
||||||
<AIC_PINMUX('C', 5, 2)>,
|
<AIC_PINMUX('C', 5, 2)>;
|
||||||
<AIC_PINMUX('C', 6, 2)>;
|
//<AIC_PINMUX('C', 6, 2)>;
|
||||||
bias-pull-up;
|
bias-pull-up;
|
||||||
drive-strength = <3>;
|
drive-strength = <3>;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -34,7 +34,7 @@ kernel_comp_size=0x1000000
|
|||||||
# set_commonargs=setenv bootargs earlycon=${earlycon} earlyprintk rdinit=${init} initramfs_dbg=${ramfs_dbg}
|
# set_commonargs=setenv bootargs earlycon=${earlycon} earlyprintk rdinit=${init} initramfs_dbg=${ramfs_dbg}
|
||||||
set_commonargs_recovery=setenv bootargs earlycon=${earlycon} earlyprintk rdinit=/linuxrc
|
set_commonargs_recovery=setenv bootargs earlycon=${earlycon} earlyprintk rdinit=/linuxrc
|
||||||
# Case 2: Mount rootfs directly
|
# Case 2: Mount rootfs directly
|
||||||
set_commonargs=setenv bootargs quiet earlycon=${earlycon} earlyprintk init=/linuxrc firmware_class.path=/etc/firmware
|
set_commonargs=setenv bootargs earlycon=${earlycon} earlyprintk init=/linuxrc firmware_class.path=/etc/firmware
|
||||||
|
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|||||||
@ -167,78 +167,19 @@
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
panel_rgb {
|
panel_dsi {
|
||||||
compatible = "artinchip,aic-general-rgb-panel";
|
compatible = "artinchip,aic-dsi-panel-simple";
|
||||||
status = "disabled";
|
|
||||||
|
|
||||||
enable-gpios = <&gpio_e 19 GPIO_ACTIVE_HIGH>;
|
|
||||||
rgb-mode = <PRGB>;
|
|
||||||
interface-format = <PRGB_16BIT_LD>;
|
|
||||||
clock-phase = <DEGREE_0>;
|
|
||||||
data-order = <RGB>;
|
|
||||||
disp-dither = <DITHER_RGB565>;
|
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
|
backlight = <&backlight>;
|
||||||
port {
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
panel_rgb_in: endpoint {
|
|
||||||
remote-endpoint = <&rgb0_out>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
display-timings {
|
|
||||||
native-mode = <&timing0>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
timing0: 1024x600 {
|
|
||||||
clock-frequency = <52000000>;
|
|
||||||
hactive = <1024>;
|
|
||||||
vactive = <600>;
|
|
||||||
hback-porch = <160>;
|
|
||||||
hfront-porch = <160>;
|
|
||||||
hsync-len = <20>;
|
|
||||||
vback-porch = <12>;
|
|
||||||
vfront-porch = <20>;
|
|
||||||
vsync-len = <3>;
|
|
||||||
de-active = <1>;
|
|
||||||
pixelclk-active = <1>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
panel_lvds {
|
|
||||||
compatible = "artinchip,aic-general-lvds-panel";
|
|
||||||
data-mapping = "vesa-24";
|
|
||||||
data-channel = "single-link1";
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
|
|
||||||
enable-gpios = <&gpio_c 7 GPIO_ACTIVE_HIGH>;
|
//reset-gpios = <&gpio_e 1 GPIO_ACTIVE_HIGH>;
|
||||||
sleep-gpios = <&gpio_a 3 GPIO_ACTIVE_HIGH>;
|
|
||||||
port {
|
port {
|
||||||
panel_lvds_in: endpoint {
|
|
||||||
remote-endpoint = <&lvds0_out>;
|
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
};
|
panel_dsi_in: endpoint {
|
||||||
};
|
|
||||||
|
|
||||||
display-timings {
|
|
||||||
native-mode = <&timing1>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
timing1: 1024x600 {
|
|
||||||
clock-frequency = <52000000>;
|
|
||||||
hactive = <1024>;
|
|
||||||
vactive = <600>;
|
|
||||||
hback-porch = <160>;
|
|
||||||
hfront-porch = <160>;
|
|
||||||
hsync-len = <20>;
|
|
||||||
vback-porch = <20>;
|
|
||||||
vfront-porch = <12>;
|
|
||||||
vsync-len = <3>;
|
|
||||||
de-active = <1>;
|
|
||||||
pixelclk-active = <1>;
|
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
|
remote-endpoint = <&dsi0_out>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -246,27 +187,29 @@
|
|||||||
backlight: backlight {
|
backlight: backlight {
|
||||||
compatible = "pwm-backlight";
|
compatible = "pwm-backlight";
|
||||||
/* pwm node name; pwm device No.; period_ns; pwm_polarity */
|
/* pwm node name; pwm device No.; period_ns; pwm_polarity */
|
||||||
pwms = <&pwm 3 1000000 0>;
|
pwms = <&pwm 0 1000000 0>;
|
||||||
brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
|
brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
|
||||||
default-brightness-level = <6>;
|
default-brightness-level = <6>;
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
status = "disabled";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
rfkill_bt {
|
rfkill_bt {
|
||||||
compatible = "rfkill-gpio";
|
compatible = "rfkill-gpio";
|
||||||
rfkill-name = "bluetooth";
|
rfkill-name = "bluetooth";
|
||||||
rfkill-type = <2>;
|
rfkill-type = <2>;
|
||||||
reset-gpios = <&gpio_d 3 GPIO_ACTIVE_HIGH>;
|
reset-gpios = <&gpio_c 6 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
/*
|
||||||
rfkill_wlan {
|
rfkill_wlan {
|
||||||
compatible = "rfkill-gpio";
|
compatible = "rfkill-gpio";
|
||||||
rfkill-name = "wlan";
|
rfkill-name = "wlan";
|
||||||
rfkill-type = <1>;
|
rfkill-type = <1>;
|
||||||
reset-gpios = <&gpio_d 1 GPIO_ACTIVE_HIGH>;
|
//reset-gpios = <&gpio_c 6 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
keys: gpio-keys {
|
keys: gpio-keys {
|
||||||
compatible = "gpio-keys";
|
compatible = "gpio-keys";
|
||||||
|
|
||||||
@ -370,8 +313,9 @@
|
|||||||
|
|
||||||
&uart2 {
|
&uart2 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&uart2_pins_a>;
|
//pinctrl-0 = <&uart2_pins_a>;
|
||||||
status = "disabled";
|
pinctrl-0 = <&uart2_pins_a>, <&uart2_rts_pins_a>, <&uart2_cts_pins_a>;
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&uart3 {
|
&uart3 {
|
||||||
@ -409,11 +353,16 @@
|
|||||||
&i2c0 {
|
&i2c0 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2c0_pins_b>;
|
pinctrl-0 = <&i2c0_pins_b>;
|
||||||
status = "disabled";
|
status = "okay";
|
||||||
rtc@32 {
|
|
||||||
compatible = "epson,rx8010";
|
lt8911exb@29 {
|
||||||
reg = <0x32>;
|
status = "okay";
|
||||||
|
compatible = "lontium,lt8911exb";
|
||||||
|
reg = <0x29>;
|
||||||
|
reset-gpios = <&gpio_e 6 GPIO_ACTIVE_HIGH>;
|
||||||
|
power-gpios = <&gpio_e 2 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
@ -431,10 +380,10 @@
|
|||||||
&i2c3 {
|
&i2c3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2c3_pins_a>;
|
pinctrl-0 = <&i2c3_pins_a>;
|
||||||
status = "okay";
|
status = "disabled";
|
||||||
|
|
||||||
gt9xx@5d {
|
gt9xx@5d {
|
||||||
status = "okay";
|
status = "disabled";
|
||||||
compatible = "goodix,gt9xx";
|
compatible = "goodix,gt9xx";
|
||||||
reg = <0x5d>;
|
reg = <0x5d>;
|
||||||
reset-gpios = <&gpio_a 8 GPIO_ACTIVE_LOW>;
|
reset-gpios = <&gpio_a 8 GPIO_ACTIVE_LOW>;
|
||||||
@ -501,10 +450,14 @@
|
|||||||
&sdmc1 {
|
&sdmc1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmc1_pins>;
|
pinctrl-0 = <&sdmc1_pins>;
|
||||||
|
max-frequency= <40000000>;
|
||||||
|
//power-gpios = <&gpio_c 6 GPIO_ACTIVE_HIGH>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cap-sd-highspeed;
|
no-mmc;
|
||||||
|
no-sd;
|
||||||
|
non-removable;
|
||||||
|
cap-sdio-irq;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdmc2 {
|
&sdmc2 {
|
||||||
@ -515,7 +468,7 @@
|
|||||||
no-sd;
|
no-sd;
|
||||||
non-removable;
|
non-removable;
|
||||||
cap-sdio-irq;
|
cap-sdio-irq;
|
||||||
status = "okay";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* case 1: USB0 = OTG Enable */
|
/* case 1: USB0 = OTG Enable */
|
||||||
@ -610,9 +563,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pwm3_pins_d: pwm3-3 {
|
pwm0_pins_d: pwm0-3 {
|
||||||
pins {
|
pins {
|
||||||
pinmux = <AIC_PINMUX('E', 19, 5)>;
|
pinmux = <AIC_PINMUX('E', 1, 8)>;
|
||||||
bias-disable;
|
bias-disable;
|
||||||
drive-strength = <3>;
|
drive-strength = <3>;
|
||||||
};
|
};
|
||||||
@ -643,7 +596,7 @@
|
|||||||
gpio_f: bank-5 {
|
gpio_f: bank-5 {
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
};
|
};
|
||||||
lvds1_pins: lvds1-0 {
|
dsi_pins: dsi-0 {
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
pins {
|
pins {
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
@ -664,6 +617,12 @@
|
|||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
pwm0_pins_d: pwm0-3 {
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
|
pins {
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
|
};
|
||||||
|
};
|
||||||
sdmc1_pins: sdmc1-0 {
|
sdmc1_pins: sdmc1-0 {
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
pins {
|
pins {
|
||||||
@ -683,7 +642,7 @@
|
|||||||
aic,use_extclk;
|
aic,use_extclk;
|
||||||
|
|
||||||
|
|
||||||
status = "okay";
|
status = "disabled";
|
||||||
|
|
||||||
gmac0_mdio: mdio {
|
gmac0_mdio: mdio {
|
||||||
compatible = "aicmac-mdio";
|
compatible = "aicmac-mdio";
|
||||||
@ -718,7 +677,7 @@
|
|||||||
|
|
||||||
&fb0 {
|
&fb0 {
|
||||||
artinchip,uboot-logo-on=<1>;
|
artinchip,uboot-logo-on=<1>;
|
||||||
height-virtual = <1200>;
|
height-virtual = <2160>;
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
port {
|
port {
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
@ -739,6 +698,7 @@
|
|||||||
|
|
||||||
port@0 {
|
port@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
de0_in: endpoint {
|
de0_in: endpoint {
|
||||||
remote-endpoint = <&fb0_out>;
|
remote-endpoint = <&fb0_out>;
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
@ -747,48 +707,27 @@
|
|||||||
|
|
||||||
port@1 {
|
port@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
de0_out: endpoint {
|
de0_out: endpoint {
|
||||||
remote-endpoint = <&lvds0_in>;
|
remote-endpoint = <&dsi0_in>;
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&rgb0 {
|
|
||||||
pinctrl-names = "default", "sleep";
|
|
||||||
pinctrl-0 = <&lcd_rgb565_ld_pins>;
|
|
||||||
pinctrl-1 = <&lcd_rgb565_ld_sleep_pins>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
status = "disabled";
|
|
||||||
|
|
||||||
port@0 {
|
&dsi0 {
|
||||||
reg = <0>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
rgb0_in: endpoint {
|
|
||||||
remote-endpoint = <&rgb0_in>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
port@1 {
|
|
||||||
reg = <1>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
rgb0_out: endpoint {
|
|
||||||
remote-endpoint = <&panel_rgb_in>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&lvds0 {
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&lvds1_pins>;
|
pinctrl-0 = <&dsi_pins>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
|
data-lanes = <3 2 1 0>;
|
||||||
|
lane-polarities = <0 0 0 0>;
|
||||||
|
|
||||||
port@0 {
|
port@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
lvds0_in: endpoint {
|
u-boot,dm-pre-reloc;
|
||||||
|
dsi0_in: endpoint {
|
||||||
remote-endpoint = <&de0_out>;
|
remote-endpoint = <&de0_out>;
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
};
|
};
|
||||||
@ -796,8 +735,9 @@
|
|||||||
|
|
||||||
port@1 {
|
port@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
lvds0_out: endpoint {
|
u-boot,dm-pre-reloc;
|
||||||
remote-endpoint = <&panel_lvds_in>;
|
dsi0_out: endpoint {
|
||||||
|
remote-endpoint = <&panel_dsi_in>;
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -877,10 +817,10 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&pwm {
|
&pwm {
|
||||||
status = "disabled";
|
status = "okay";
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwm3_pins_d>;
|
pinctrl-0 = <&pwm0_pins_d>;
|
||||||
/* mode: up-count, down-count, up-down-count
|
/* mode: up-count, down-count, up-down-count
|
||||||
action: none, low, high, inverse */
|
action: none, low, high, inverse */
|
||||||
pwm0 {
|
pwm0 {
|
||||||
@ -891,7 +831,7 @@
|
|||||||
/* CBD, CBU, CAD, CAU, PRD, ZRO */
|
/* CBD, CBU, CAD, CAU, PRD, ZRO */
|
||||||
aic,action0 = "none", "none", "none", "low", "none", "high";
|
aic,action0 = "none", "none", "none", "low", "none", "high";
|
||||||
aic,action1 = "none", "none", "none", "high", "none", "low";
|
aic,action1 = "none", "none", "none", "high", "none", "low";
|
||||||
status = "disabled";
|
status = "okay";
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
113
target/d211/demo128_nand/rootfs_overlay/etc/init.d/S40bluetooth
Executable file
113
target/d211/demo128_nand/rootfs_overlay/etc/init.d/S40bluetooth
Executable file
@ -0,0 +1,113 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
|
||||||
|
HCI_DEV=hci0
|
||||||
|
UART_DEV=/dev/ttyS2
|
||||||
|
HCIATTACH_BIN=/usr/bin/hciattach
|
||||||
|
HCIATTACH_ARGS="-s 1500000 ${UART_DEV} any 1500000 flow nosleep"
|
||||||
|
HCI_TOOL=/usr/bin/bt-hci-tool
|
||||||
|
BTGATT_BIN=/usr/bin/btgatt-server
|
||||||
|
BTGATT_ARGS="-i ${HCI_DEV} -s low -t public"
|
||||||
|
BLUETOOTHD_BIN=/usr/libexec/bluetooth/bluetoothd
|
||||||
|
BT_LOCAL_NAME="AIC-BT"
|
||||||
|
HCI_WAIT_TIMEOUT=10
|
||||||
|
|
||||||
|
ATTACH_PIDFILE=/var/run/hciattach.pid
|
||||||
|
BTGATT_PIDFILE=/var/run/btgatt-server.pid
|
||||||
|
BLUETOOTHD_PIDFILE=/var/run/bluetoothd.pid
|
||||||
|
|
||||||
|
wait_for_hci()
|
||||||
|
{
|
||||||
|
"${HCI_TOOL}" wait "${HCI_DEV}" "${HCI_WAIT_TIMEOUT}"
|
||||||
|
}
|
||||||
|
|
||||||
|
bring_hci_up()
|
||||||
|
{
|
||||||
|
"${HCI_TOOL}" up "${HCI_DEV}"
|
||||||
|
}
|
||||||
|
|
||||||
|
start_bt()
|
||||||
|
{
|
||||||
|
echo "[BT] Init AIC8800..."
|
||||||
|
insmod /lib/modules/5.10.44/kernel/drivers/net/wireless/aic8800/aic8800_btlpm/aic8800_btlpm.ko 2>/dev/null
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
killall hciattach 2>/dev/null
|
||||||
|
killall bluetoothd 2>/dev/null
|
||||||
|
killall btgatt-server 2>/dev/null
|
||||||
|
rm -f "${ATTACH_PIDFILE}" "${BLUETOOTHD_PIDFILE}" "${BTGATT_PIDFILE}"
|
||||||
|
|
||||||
|
"${HCIATTACH_BIN}" ${HCIATTACH_ARGS} &
|
||||||
|
echo $! > "${ATTACH_PIDFILE}"
|
||||||
|
|
||||||
|
if ! wait_for_hci; then
|
||||||
|
echo "[BT] ERROR: ${HCI_DEV} not ready"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! bring_hci_up; then
|
||||||
|
echo "[BT] ERROR: failed to bring ${HCI_DEV} up"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 先启动 LE 广播
|
||||||
|
hciconfig ${HCI_DEV} leadv 0
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# 启动 bluetoothd
|
||||||
|
"${BLUETOOTHD_BIN}" &
|
||||||
|
echo $! > "${BLUETOOTHD_PIDFILE}"
|
||||||
|
|
||||||
|
# 启动 btgatt-server(设置广播数据,包含名称)
|
||||||
|
"${BTGATT_BIN}" ${BTGATT_ARGS} >/dev/null 2>&1 &
|
||||||
|
echo $! > "${BTGATT_PIDFILE}"
|
||||||
|
|
||||||
|
echo "[BT] Bluetooth ready with GATT server"
|
||||||
|
}
|
||||||
|
|
||||||
|
stop_bt()
|
||||||
|
{
|
||||||
|
hciconfig ${HCI_DEV} noleadv 2>/dev/null
|
||||||
|
|
||||||
|
if [ -f "${BTGATT_PIDFILE}" ]; then
|
||||||
|
kill "$(cat "${BTGATT_PIDFILE}")" 2>/dev/null
|
||||||
|
rm -f "${BTGATT_PIDFILE}"
|
||||||
|
else
|
||||||
|
killall btgatt-server 2>/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${BLUETOOTHD_PIDFILE}" ]; then
|
||||||
|
kill "$(cat "${BLUETOOTHD_PIDFILE}")" 2>/dev/null
|
||||||
|
rm -f "${BLUETOOTHD_PIDFILE}"
|
||||||
|
else
|
||||||
|
killall bluetoothd 2>/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${ATTACH_PIDFILE}" ]; then
|
||||||
|
kill "$(cat "${ATTACH_PIDFILE}")" 2>/dev/null
|
||||||
|
rm -f "${ATTACH_PIDFILE}"
|
||||||
|
else
|
||||||
|
killall hciattach 2>/dev/null
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
start_bt
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop_bt
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
stop_bt
|
||||||
|
sleep 1
|
||||||
|
start_bt
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {start|stop|restart}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit $?
|
||||||
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libaic_mem.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libaic_mem.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libcurl.so.4
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libcurl.so.4
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/liblogo_fdt.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/liblogo_fdt.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmedia_audio_player.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmedia_audio_player.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmedia_player.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmedia_player.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmedia_recorder.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmedia_recorder.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmm_base.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmm_base.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmm_component.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmm_component.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmosquitto.so.1
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmosquitto.so.1
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_audio_decoder.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_audio_decoder.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_base.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_base.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_decoder.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_decoder.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_encoder.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_encoder.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_ge.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_ge.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_ve.so
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/lib/libmpp_ve.so
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/usr/bin/bt-hci-tool
Normal file
BIN
target/d211/demo128_nand/rootfs_overlay/usr/bin/bt-hci-tool
Normal file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/usr/bin/btgatt-server
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/usr/bin/btgatt-server
Executable file
Binary file not shown.
BIN
target/d211/demo128_nand/rootfs_overlay/usr/bin/e_player
Executable file
BIN
target/d211/demo128_nand/rootfs_overlay/usr/bin/e_player
Executable file
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user