Compare commits

..

No commits in common. "15.6" and "master" have entirely different histories.
15.6 ... master

65 changed files with 158 additions and 1972 deletions

View File

@ -1,3 +0,0 @@
make list
make d211_demo128_nand_defconfig
make

View File

@ -1,61 +0,0 @@
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

View File

@ -1 +0,0 @@
https://aicdoc.artinchip.com/topics/sdk/wifi/wifi-rtl8821cs-luban.html

View File

@ -569,21 +569,10 @@ $(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: $($(PKG)_NAME)") @$(call MESSAGE,"Extracting prebuilt binary tarball")
# 创建解压目录避免tar解压失败 $($(PKG)_PREBUILT_EXTRACT_CMDS)
$(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

View File

@ -94,14 +94,11 @@ 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
@ -130,12 +127,11 @@ 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_MIPI_DSI=y CONFIG_AIC_DISP_LVDS=y
CONFIG_AIC_PANEL_DSI_SIMPLE=y CONFIG_AIC_PANEL_LVDS_GENERAL=y
CONFIG_SOUND=y CONFIG_SOUND=y
CONFIG_SND=y CONFIG_SND=y
CONFIG_SND_SOC=y CONFIG_SND_SOC=y
@ -201,8 +197,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=48 CONFIG_CMA_SIZE_MBYTES=24
CONFIG_CMA_MPP_SIZE_MBYTES=24 CONFIG_CMA_MPP_SIZE_MBYTES=16
CONFIG_PRINTK_TIME=y CONFIG_PRINTK_TIME=y
CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_FS=y CONFIG_DEBUG_FS=y

View File

@ -46,15 +46,10 @@ extern int aicwf_dbg_level_bsp;
#define AICWF_LOG "AICWFDBG(" #define AICWF_LOG "AICWFDBG("
//#define AICWFDBG(level, args, arg...) \
do { \
if (aicwf_dbg_level_bsp & level) { \
printk(AICWF_LOG#level")\t" args, ##arg); \
} \
} while (0)
#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); \
} \ } \
} while (0) } while (0)

View File

@ -20,15 +20,10 @@ void rwnx_data_dump(char* tag, void* data, unsigned long len);
#define AICWF_LOG "AICWFDBG(" #define AICWF_LOG "AICWFDBG("
//#define AICWFDBG(level, args, arg...) \
do { \
if (aicwf_dbg_level & level) { \
printk(AICWF_LOG#level")\t" args, ##arg); \
} \
} while (0)
#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); \
} \ } \
} while (0) } while (0)

View File

@ -24,7 +24,6 @@ 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

View File

@ -9,7 +9,6 @@ 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)

View File

@ -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 = 150 * 1000 * 1000, .pixelclock = 130000000,
.hactive = 1920, .hactive = 1200,
.hfront_porch = 188, .hfront_porch = 160,
.hback_porch = 148, .hback_porch = 160,
.hsync_len = 44, .hsync_len = 40,
.vactive = 1080, .vactive = 1920,
.vfront_porch = 4, .vfront_porch = 10,
.vback_porch = 36, .vback_porch = 20,
.vsync_len = 5, .vsync_len = 8,
.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
}; };

View File

@ -1,10 +0,0 @@
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

View File

@ -1,32 +0,0 @@
#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;
}

View File

@ -1,283 +0,0 @@
#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(&parameter, buf, sizeof(parameter))) {
return -EFAULT;
}
parameter.value = HDMI_ReadI2C_Byte(parameter.address);
if (copy_to_user(buf, &parameter, 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(&parameter, 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>");

View File

@ -1,5 +0,0 @@
lt8911exb-y := LontiumDrv.o LT8911EXB_Main.o OcmI2cMaster.o lt8911.o
obj-$(CONFIG_LT8911EXB) += lt8911exb.o

View File

@ -1,72 +0,0 @@
#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);

View File

@ -1,11 +0,0 @@
#ifndef _LT8911EXB_MAIN_H_
#define _LT8911EXB_MAIN_H_
extern bool g_irq_flag;
extern int LT8911EXB_Main(void *data);
#endif

View File

@ -1,27 +0,0 @@
#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

View File

@ -1,22 +0,0 @@
#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

View File

@ -1,39 +0,0 @@
#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

View File

@ -1,72 +0,0 @@
#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

View File

@ -1,10 +0,0 @@
#ifndef _TYPE_H_
#define _TYPE_H_
#define HIGH 1
#define LOW 0
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +0,0 @@
---- 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();

View File

@ -99,7 +99,6 @@ 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
@ -139,8 +138,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_MIPI_DSI=y CONFIG_AIC_DISP_LVDS=y
CONFIG_AIC_PANEL_DSI_SIMPLE=y CONFIG_AIC_PANEL_LVDS_GENERAL=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

View File

@ -139,16 +139,12 @@ 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_FRA), PLL_FRA0_SDM_REG, AIC_PLL_SDM),
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_FRA, 0, 1200000000), PLL_FRA2_SDM_REG, AIC_PLL_SDM, 0, 1200000000),
}; };

View File

@ -192,26 +192,6 @@ 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)

View File

@ -62,15 +62,6 @@ 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
}; };

View File

@ -1 +0,0 @@
/home/tzkj/work/code/linuxOS_D21X/target/d211/demo128_nand/image_cfg.json

View File

@ -17,7 +17,6 @@ BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
BR2_TARGET_ROOTFS_UBI=y BR2_TARGET_ROOTFS_UBI=y
BR2_TARGET_ROOTFS_UBIFS_MAX_SIZE=0x4000000 BR2_TARGET_ROOTFS_UBIFS_MAX_SIZE=0x4000000
BR2_TARGET_ROOTFS_UBIFS_OPTS="-F" BR2_TARGET_ROOTFS_UBIFS_OPTS="-F"
BR2_GENERATE_BURNER_IMAGE=y
BR2_GENERATE_IMAGE_AUTO_CALCULATE_SIZE=y BR2_GENERATE_IMAGE_AUTO_CALCULATE_SIZE=y
BR2_PACKAGE_OPENSBI_FW_TEXT_BASE=0x47FE0000 BR2_PACKAGE_OPENSBI_FW_TEXT_BASE=0x47FE0000
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="d211_demo128_nand" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="d211_demo128_nand"
@ -36,6 +35,7 @@ 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,27 +55,7 @@ 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

View File

@ -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>;
}; };

View File

@ -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 earlycon=${earlycon} earlyprintk init=/linuxrc firmware_class.path=/etc/firmware set_commonargs=setenv bootargs quiet earlycon=${earlycon} earlyprintk init=/linuxrc firmware_class.path=/etc/firmware
#=============================================================================== #===============================================================================

View File

@ -167,19 +167,78 @@
}; };
#endif #endif
panel_dsi { panel_rgb {
compatible = "artinchip,aic-dsi-panel-simple"; compatible = "artinchip,aic-general-rgb-panel";
u-boot,dm-pre-reloc; status = "disabled";
backlight = <&backlight>;
status = "okay";
//reset-gpios = <&gpio_e 1 GPIO_ACTIVE_HIGH>; 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;
port { port {
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
panel_dsi_in: endpoint { 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";
u-boot,dm-pre-reloc;
enable-gpios = <&gpio_c 7 GPIO_ACTIVE_HIGH>;
sleep-gpios = <&gpio_a 3 GPIO_ACTIVE_HIGH>;
port {
panel_lvds_in: endpoint {
remote-endpoint = <&lvds0_out>;
u-boot,dm-pre-reloc;
};
};
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>;
}; };
}; };
}; };
@ -187,29 +246,27 @@
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 0 1000000 0>; pwms = <&pwm 3 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 = "okay"; status = "disabled";
}; };
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_c 6 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio_d 3 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_c 6 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio_d 1 GPIO_ACTIVE_HIGH>;
status = "okay"; status = "okay";
}; };
*/
keys: gpio-keys { keys: gpio-keys {
compatible = "gpio-keys"; compatible = "gpio-keys";
@ -313,9 +370,8 @@
&uart2 { &uart2 {
pinctrl-names = "default"; pinctrl-names = "default";
//pinctrl-0 = <&uart2_pins_a>; pinctrl-0 = <&uart2_pins_a>;
pinctrl-0 = <&uart2_pins_a>, <&uart2_rts_pins_a>, <&uart2_cts_pins_a>; status = "disabled";
status = "okay";
}; };
&uart3 { &uart3 {
@ -353,16 +409,11 @@
&i2c0 { &i2c0 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins_b>; pinctrl-0 = <&i2c0_pins_b>;
status = "okay"; status = "disabled";
rtc@32 {
lt8911exb@29 { compatible = "epson,rx8010";
status = "okay"; reg = <0x32>;
compatible = "lontium,lt8911exb";
reg = <0x29>;
reset-gpios = <&gpio_e 6 GPIO_ACTIVE_HIGH>;
power-gpios = <&gpio_e 2 GPIO_ACTIVE_HIGH>;
}; };
}; };
&i2c1 { &i2c1 {
@ -380,10 +431,10 @@
&i2c3 { &i2c3 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&i2c3_pins_a>; pinctrl-0 = <&i2c3_pins_a>;
status = "disabled"; status = "okay";
gt9xx@5d { gt9xx@5d {
status = "disabled"; status = "okay";
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>;
@ -450,14 +501,10 @@
&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>;
no-mmc; cap-sd-highspeed;
no-sd;
non-removable;
cap-sdio-irq;
status = "okay"; status = "okay";
u-boot,dm-pre-reloc;
}; };
&sdmc2 { &sdmc2 {
@ -468,7 +515,7 @@
no-sd; no-sd;
non-removable; non-removable;
cap-sdio-irq; cap-sdio-irq;
status = "disabled"; status = "okay";
}; };
/* case 1: USB0 = OTG Enable */ /* case 1: USB0 = OTG Enable */
@ -563,9 +610,9 @@
}; };
}; };
pwm0_pins_d: pwm0-3 { pwm3_pins_d: pwm3-3 {
pins { pins {
pinmux = <AIC_PINMUX('E', 1, 8)>; pinmux = <AIC_PINMUX('E', 19, 5)>;
bias-disable; bias-disable;
drive-strength = <3>; drive-strength = <3>;
}; };
@ -596,7 +643,7 @@
gpio_f: bank-5 { gpio_f: bank-5 {
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
}; };
dsi_pins: dsi-0 { lvds1_pins: lvds1-0 {
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
pins { pins {
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
@ -617,12 +664,6 @@
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 {
@ -642,7 +683,7 @@
aic,use_extclk; aic,use_extclk;
status = "disabled"; status = "okay";
gmac0_mdio: mdio { gmac0_mdio: mdio {
compatible = "aicmac-mdio"; compatible = "aicmac-mdio";
@ -677,7 +718,7 @@
&fb0 { &fb0 {
artinchip,uboot-logo-on=<1>; artinchip,uboot-logo-on=<1>;
height-virtual = <2160>; height-virtual = <1200>;
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
port { port {
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
@ -698,7 +739,6 @@
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;
@ -707,28 +747,25 @@
port@1 { port@1 {
reg = <1>; reg = <1>;
u-boot,dm-pre-reloc;
de0_out: endpoint { de0_out: endpoint {
remote-endpoint = <&dsi0_in>; remote-endpoint = <&lvds0_in>;
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
}; };
}; };
}; };
&rgb0 {
&dsi0 { pinctrl-names = "default", "sleep";
pinctrl-names = "default"; pinctrl-0 = <&lcd_rgb565_ld_pins>;
pinctrl-0 = <&dsi_pins>; pinctrl-1 = <&lcd_rgb565_ld_sleep_pins>;
status = "okay";
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
data-lanes = <3 2 1 0>; status = "disabled";
lane-polarities = <0 0 0 0>;
port@0 { port@0 {
reg = <0>; reg = <0>;
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
dsi0_in: endpoint { rgb0_in: endpoint {
remote-endpoint = <&de0_out>; remote-endpoint = <&rgb0_in>;
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
}; };
}; };
@ -736,8 +773,31 @@
port@1 { port@1 {
reg = <1>; reg = <1>;
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
dsi0_out: endpoint { rgb0_out: endpoint {
remote-endpoint = <&panel_dsi_in>; remote-endpoint = <&panel_rgb_in>;
u-boot,dm-pre-reloc;
};
};
};
&lvds0 {
pinctrl-names = "default";
pinctrl-0 = <&lvds1_pins>;
status = "okay";
u-boot,dm-pre-reloc;
port@0 {
reg = <0>;
lvds0_in: endpoint {
remote-endpoint = <&de0_out>;
u-boot,dm-pre-reloc;
};
};
port@1 {
reg = <1>;
lvds0_out: endpoint {
remote-endpoint = <&panel_lvds_in>;
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
}; };
}; };
@ -817,10 +877,10 @@
}; };
&pwm { &pwm {
status = "okay"; status = "disabled";
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pwm0_pins_d>; pinctrl-0 = <&pwm3_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 {
@ -831,7 +891,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 = "okay"; status = "disabled";
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
}; };

View File

@ -1,6 +1,6 @@
{ {
"spi-nand": { // Device, The name should be the same with string in image:info:media:type "spi-nand": { // Device, The name should be the same with string in image:info:media:type
"size": "256m", // Size of SPI NAND "size": "128m", // Size of SPI NAND
"partitions": { "partitions": {
"spl": { "size": "1m" }, "spl": { "size": "1m" },
"uboot": { "size": "1m" }, "uboot": { "size": "1m" },
@ -13,7 +13,7 @@
"kernel": { "size": "12m" }, "kernel": { "size": "12m" },
"recovery": { "size": "16m" }, "recovery": { "size": "16m" },
"ubiroot": { "ubiroot": {
"size": "218m", "size": "64m",
"ubi": { // Volume in UBI device "ubi": { // Volume in UBI device
"rootfs": { "size": "-" }, "rootfs": { "size": "-" },
}, },

View File

@ -1,113 +0,0 @@
#!/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 $?