浏览代码

efDataPreprocessing memoryOperation.c 吉超博 commit at 2021-03-03

吉超博 4 年之前
父节点
当前提交
6981892794
共有 1 个文件被更改,包括 25 次插入0 次删除
  1. 25 0
      efDataPreprocessing/dataSharedMemory/memoryOperation.c

+ 25 - 0
efDataPreprocessing/dataSharedMemory/memoryOperation.c

@@ -351,3 +351,28 @@ static void __init vic_init_st(void __iomem *base, unsigned int irq_start,
 
 		writel(32, base + VIC_PL190_DEF_VECT_ADDR);
 	}
+
+	vic_register(base, irq_start, vic_sources, 0, node);
+}
+
+void __init __vic_init(void __iomem *base, int irq_start,
+			      u32 vic_sources, u32 resume_sources,
+			      struct device_node *node)
+{
+	unsigned int i;
+	u32 cellid = 0;
+	enum amba_vendor vendor;
+
+	/* Identify which VIC cell this one is, by reading the ID */
+	for (i = 0; i < 4; i++) {
+		void __iomem *addr;
+		addr = (void __iomem *)((u32)base & PAGE_MASK) + 0xfe0 + (i * 4);
+		cellid |= (readl(addr) & 0xff) << (8 * i);
+	}
+	vendor = (cellid >> 12) & 0xff;
+	printk(KERN_INFO "VIC @%p: id 0x%08x, vendor 0x%02x\n",
+	       base, cellid, vendor);
+
+	switch(vendor) {
+	case AMBA_VENDOR_ST:
+		vic_init_st(base, irq_start, vic_sources, node);