2 Commits db2fa51917 ... df550fff83

Author SHA1 Message Date
  huangliang df550fff83 修复lock debug提示的错误 2 months ago
  huangliang d3fdad4e02 调整时钟配置,优化DMA和MFC解码(时钟配置如果和服务器上有差异请联系原厂确认修改) 2 months ago

BIN
bootstrap/ark1668e_devb/ARKSDLDR.bin


+ 3 - 3
linux/arch/arm/boot/dts/ark1668e.dtsi

@@ -333,7 +333,7 @@
 				reg = <0x58>;
 				index-offset = <8>;
 				index-mask = <0xf>;
-				index-value = <1>;
+				index-value = <0>;
 				div-offset = <0>;
 				div-mask = <0x1f>;
 				div-value = <10>;
@@ -349,7 +349,7 @@
 				reg = <0x5c>;
 				index-offset = <8>;
 				index-mask = <0xf>;
-				index-value = <1>;
+				index-value = <0>;
 				div-offset = <0>;
 				div-mask = <0x1f>;
 				div-value = <10>;
@@ -365,7 +365,7 @@
 				reg = <0x7c>;
 				index-offset = <8>;
 				index-mask = <0xf>;
-				index-value = <1>;
+				index-value = <0>;
 				div-offset = <0>;
 				div-mask = <0x1f>;
 				div-value = <10>;

+ 8 - 2
linux/drivers/soc/arkmicro/hx170dec/dwl_linux.c

@@ -689,8 +689,11 @@ void DWLEnableHW(const void *instance, /*i32 coreID,*/ u32 offset, u32 value)
     regs += isPP ? 60 : 0;
     size = isPP ? 41 : 60;
 
-	for (i = size - 1; i >= 1; i--)
+	for (i = size - 1; i >= 1; i--) {
+		volatile u32 tmp = *(volatile u32*)(&io[(isPP ? 60 : 0) + i]);
+		(void)tmp;
 		io[(isPP ? 60 : 0) + i] =   regs[i];
+	}
 }
 
 /*------------------------------------------------------------------------------
@@ -725,8 +728,11 @@ void DWLDisableHW(const void *instance, /*i32 coreID,*/ u32 offset, u32 value)
     regs += isPP ? 60 : 0;
     size = isPP ? 41 : 60;
 
-	for (i = size - 1; i >= 1; i--)
+	for (i = size - 1; i >= 1; i--) {
+		volatile u32 tmp = *(volatile u32*)(&io[(isPP ? 60 : 0) + i]);
+		(void)tmp;
 		io[(isPP ? 60 : 0) + i] =   regs[i];
+	}
 }
 
 /*------------------------------------------------------------------------------

+ 2 - 1
linux/drivers/soc/arkmicro/hx170dec/hx170dec.c

@@ -68,6 +68,8 @@ EXPORT_SYMBOL(get_bootanimation_status);
 
 static inline void vdec_writel(const struct vdec_device *p, unsigned offset, u32 val)
 {
+	volatile u32 tmp = readl(p->mmio_base + offset);
+	(void)tmp;
 	writel(val, p->mmio_base + offset);
 }
 
@@ -226,7 +228,6 @@ static void animation_dec_work(struct work_struct *work)
 		}
 		iounmap((void*)context->animation_data_virtaddr);
 		p->context.anmation_stats = 0;
-		destroy_workqueue(context->animation_queue);
 		return;
 	}
 

+ 2 - 0
linux/drivers/tty/serial/ark_mcu_serial.c

@@ -123,6 +123,8 @@ static int ark_mcu_serial_probe(struct platform_device *pdev)
 	msinfo = info;
 	info->carback_ready = 0;
 
+	spin_lock_init(&info->lock);
+
 	INIT_WORK(&info->rx_task, mcu_serial_rx_task);
 
 	mcu_serial_register_rev_handler(mcu_serial_get_ch, &info->rx_task);

+ 0 - 2
linux/drivers/watchdog/ark_wdt.c

@@ -71,9 +71,7 @@ static int ark_wdt_keepalive(struct watchdog_device *wdd)
 {
 	struct ark_wdt *wdt = watchdog_get_drvdata(wdd);
 
-	spin_lock(&wdt->lock);
 	writel(wdt->count, wdt->reg_base + ARK_WTCNT);
-	spin_unlock(&wdt->lock);
 
 	return 0;
 }

+ 2 - 2
u-boot/arch/arm/mach-arkmicro/spl_ark1668e.c

@@ -7,7 +7,7 @@
 #include <asm-generic/gpio.h>
 #define CPUPLL_CLK  800
 #define LCDPLL_CLK	480
-#define AXIPLL_CLK	480
+#define AXIPLL_CLK	432
 #define AHBPLL_CLK	336
 #define APBPLL_CLK	480
 #define DDRPLL_CLK  360
@@ -210,7 +210,7 @@ static void switch_to_main_crystal_osc(void)
 	/* the mfc clk can't reconfig at other place */
 	regval = read_sys_reg(SYS_DEVICE_CLK_CFG1);
 	regval &= ~(0x7 << 16);
-	regval |= (1 << 16);
+	regval |= (2 << 16);
 	write_sys_reg(regval, SYS_DEVICE_CLK_CFG1);
 	udelay(50);
 	regval = read_sys_reg(SYS_DEVICE_CLK_CFG1);

+ 3 - 3
u-boot/board/arkmicro/ark1668e_devb/ark1668e_devb.c

@@ -126,11 +126,11 @@ static int ark_dwmci_init(char *name,u32 regbase, int bus_width, int index)
 	//rSYS_SD_CLK_CFG |= 52 << 13;
 	//rSYS_SD1_CLK_CFG &= ~(0x7f << 13);
 	//rSYS_SD1_CLK_CFG |= 52 << 13;
-	/* mmc clk axipll(480M) / ((4 + 1) * 2) */
+	/* mmc clk apbpll(480M) / ((4 + 1) * 2) */
 	rSYS_SD_CLK_CFG &= ~0xfff;
-	rSYS_SD_CLK_CFG |= (1 << 8) | (1 << 7) | (1 << 5) | 4;
+	rSYS_SD_CLK_CFG |= (0 << 8) | (1 << 7) | (1 << 5) | 4;
 	rSYS_SD1_CLK_CFG &= ~0xfff;
-	rSYS_SD1_CLK_CFG |= (1 << 8) | (1 << 7) | (1 << 5) | 4;
+	rSYS_SD1_CLK_CFG |= (0 << 8) | (1 << 7) | (1 << 5) | 4;
     host->name = name;
     host->ioaddr = (void *)regbase;
     host->buswidth = bus_width;

+ 3 - 3
u-boot/board/arkmicro/ark1668e_devb_dashboard/ark1668e_devb_dashboard.c

@@ -126,11 +126,11 @@ static int ark_dwmci_init(char *name,u32 regbase, int bus_width, int index)
 	//rSYS_SD_CLK_CFG |= 52 << 13;
 	//rSYS_SD1_CLK_CFG &= ~(0x7f << 13);
 	//rSYS_SD1_CLK_CFG |= 52 << 13;
-	/* mmc clk axipll(480M) / ((4 + 1) * 2) */
+	/* mmc clk apbpll(480M) / ((4 + 1) * 2) */
 	rSYS_SD_CLK_CFG &= ~0xfff;
-	rSYS_SD_CLK_CFG |= (1 << 8) | (1 << 7) | (1 << 5) | 4;
+	rSYS_SD_CLK_CFG |= (0 << 8) | (1 << 7) | (1 << 5) | 4;
 	rSYS_SD1_CLK_CFG &= ~0xfff;
-	rSYS_SD1_CLK_CFG |= (1 << 8) | (1 << 7) | (1 << 5) | 4;
+	rSYS_SD1_CLK_CFG |= (0 << 8) | (1 << 7) | (1 << 5) | 4;
     host->name = name;
     host->ioaddr = (void *)regbase;
     host->buswidth = bus_width;

+ 3 - 3
u-boot/board/arkmicro/ark1668e_devb_emmc/ark1668e_devb_emmc.c

@@ -123,11 +123,11 @@ static int ark_dwmci_init(char *name,u32 regbase, int bus_width, int index)
 	//rSYS_SD_CLK_CFG |= 52 << 13;
 	//rSYS_SD1_CLK_CFG &= ~(0x7f << 13);
 	//rSYS_SD1_CLK_CFG |= 52 << 13;
-	/* mmc clk axipll(480M) / ((4 + 1) * 2) */
+	/* mmc clk apbpll(480M) / ((4 + 1) * 2) */
 	rSYS_SD_CLK_CFG &= ~0xfff;
-	rSYS_SD_CLK_CFG |= (1 << 8) | (1 << 7) | (1 << 5) | 4;
+	rSYS_SD_CLK_CFG |= (0 << 8) | (1 << 7) | (1 << 5) | 4;
 	rSYS_SD1_CLK_CFG &= ~0xfff;
-	rSYS_SD1_CLK_CFG |= (1 << 8) | (1 << 7) | (1 << 5) | 4;
+	rSYS_SD1_CLK_CFG |= (0 << 8) | (1 << 7) | (1 << 5) | 4;
 	host->name = name;
 	host->ioaddr = (void *)regbase;
 	host->buswidth = bus_width;