⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1000.tango2.patch

📁 sm86xx内核源包括补丁( GPL )的
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
+		m->kernel_end = kend;+		gen_memcfg_checksum(m);+//		emprintk("ebase @%08lx. found memcfg @%08lx.\n", read_c0_ebase(), MEM_BASE_dram_controller_0+FM_MEMCFG);+	}++#ifdef CONFIG_QUICKTURN+	// emhack: removing 16MB here!+	add_memory_region(MEM_BASE_dram_controller_0+16*1024*1024, TANGO2_SYSTEMRAM_ACTUALSIZE, BOOT_MEM_RAM);+#else+	offset = KSEG1ADDR(em8xxx_kmem_start) - KSEG1ADDR(MEM_BASE_dram_controller_0);+	/* Mark the address from 0 to the start of kernel reserved */+	add_memory_region(0, MEM_BASE_dram_controller_0+offset, BOOT_MEM_RESERVED);+	add_memory_region(MEM_BASE_dram_controller_0+offset, em8xxx_kmem_size, BOOT_MEM_RAM);+                                                                                +//	emprintk("Adding memory region from 0x%08lx, size 0x%08lx\n", MEM_BASE_dram_controller_0+offset, em8xxx_kmem_size);+#endif++//	emprintk("status=%p ebase=%p watchlo=%p watchhi=%p\n",read_c0_status(),read_c0_ebase(),read_c0_watchlo0(),read_c0_watchhi0());++#ifdef CONFIG_TANGO2_SMP863X+	/* Calculating CPU/System frequencies */+	em8xxx_cpu_frequency = tango2_get_cpuclock();+	em8xxx_sys_frequency = tango2_get_sysclock();+#endif++#if defined(CONFIG_TANGO2_SIG_BLOCK) || defined(CONFIG_TANGO2_XENV)+	tango2_device_info();+#endif+	return(0);+}++void __init prom_free_prom_memory(void)+{+}++void __init prom_fixup_mem_map(unsigned long start, unsigned long end)+{+}++#if defined(CONFIG_TANGO2_SIG_BLOCK)+int tango2_pcidev_irq_map(const int pci_idsel, const int int_num)+{+	int irq = pcidev_intr_num(sigptr, pci_idsel, int_num);+	if (irq >= 0)+		irq += IRQ_CONTROLLER_IRQ_BASE;+	return(irq);+}++int tango2_isaide_irq_map(void)+{+	int irq = isaide_intr_num(sigptr);+	if (irq >= 0)+		irq += IRQ_CONTROLLER_IRQ_BASE;+	return(irq);+}++int tango2_isaide_cs_select(void)+{+	return(isaide_cs_select(sigptr));+}++int tango2_isaide_timing_slot(void)+{+	return(isaide_timing_slot(sigptr));+}++int tango2_isaide_enabled(void)+{+	return(isaide_enabled(sigptr));+}++int tango2_bmide_enabled(void)+{+	return(bmide_enabled(sigptr));+}++int tango2_sata_enabled(void)+{+	return(sata_enabled(sigptr));+}++int tango2_pci_host_enabled(void)+{+	return(pci_host_enabled(sigptr));+}++int tango2_ir_enabled(void)+{+	return(ir_enabled(sigptr));+}++int tango2_fip_enabled(void)+{+	return(fip_enabled(sigptr));+}++int tango2_ethernet_enabled(void)+{+	return(ethernet_enabled(sigptr));+}++int tango2_sdio_enabled(void)+{+	return(sdio_enabled(sigptr));+}++int tango2_usb_enabled(void)+{+	return(usb_enabled(sigptr));+}++int tango2_i2cm_enabled(void)+{+	return(i2cm_enabled(sigptr));+}++int tango2_i2cs_enabled(void)+{+	return(i2cs_enabled(sigptr));+}++int tango2_scard_enabled(void) +{+	return(scard_enabled(sigptr));+}++int tango2_gnet_enabled(void) +{+	return(gnet_enabled(sigptr));+}++int tango2_pcidev_enabled(const int pci_idsel)+{+	if (tango2_pci_host_enabled())+		return(pcidev_enabled(sigptr, pci_idsel));+	else+		return(0);+}++int tango2_ethernet_getmac(unsigned char *mac)+{+	if (tango2_ethernet_enabled() == 0)+		return(0);+	else {+		mac[0] = (sigptr->hwinfo.mac_hi >> 8) & 0xff;+		mac[1] = (sigptr->hwinfo.mac_hi >> 0) & 0xff;+		mac[2] = (sigptr->hwinfo.mac_lo >> 24) & 0xff;+		mac[3] = (sigptr->hwinfo.mac_lo >> 16) & 0xff;+		mac[4] = (sigptr->hwinfo.mac_lo >> 8) & 0xff;+		mac[5] = (sigptr->hwinfo.mac_lo >> 0) & 0xff;+	}+	return(1);+}++#elif defined(CONFIG_TANGO2_XENV)++int tango2_isaide_enabled(void)+{+	return((((xenv_enabled_devices >> ISAIDE_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_bmide_enabled(void)+{+	return((((xenv_enabled_devices >> BMIDE_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_sata_enabled(void)+{+	return((((xenv_enabled_devices >> SATA_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_pci_host_enabled(void)+{+	return((((xenv_enabled_devices >> PCIHOST_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_ir_enabled(void)+{+	return((((xenv_enabled_devices >> IR_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_fip_enabled(void)+{+	return((((xenv_enabled_devices >> FIP_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_ethernet_enabled(void)+{+	return((((xenv_enabled_devices >> ETHERNET_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_sdio_enabled(void)+{+	return((((xenv_enabled_devices >> SDIO_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_usb_enabled(void)+{+	return((((xenv_enabled_devices >> USB_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_i2cm_enabled(void)+{+	return((((xenv_enabled_devices >> I2CM_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_i2cs_enabled(void)+{+	return((((xenv_enabled_devices >> I2CS_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_scard_enabled(void) +{+	return((((xenv_enabled_devices >> SCARD_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_gnet_enabled(void) +{+	return((((xenv_enabled_devices >> GNET_SHIFT) & 1) != 0) ? 1 : 0);+}++int tango2_pcidev_enabled(const int pci_idsel)+{+	return((((xenv_enabled_devices >> (pci_idsel - 1 + PCI1_SHIFT)) & 1) != 0) ? 1 : 0);+}++int tango2_ethernet_getmac(unsigned char *mac)+{+	if (tango2_ethernet_enabled() == 0)+		return(0);+	else if ((xenv_mac_hi != 0) || (xenv_mac_lo != 0)) {+		mac[0] = (xenv_mac_hi >> 8) & 0xff;+		mac[1] = (xenv_mac_hi >> 0) & 0xff;+		mac[2] = (xenv_mac_lo >> 24) & 0xff;+		mac[3] = (xenv_mac_lo >> 16) & 0xff;+		mac[4] = (xenv_mac_lo >> 8) & 0xff;+		mac[5] = (xenv_mac_lo >> 0) & 0xff;+		return(1);+	}+	return(0);+}++int tango2_pcidev_irq_map(const int pci_idsel, const int int_num)+{+	int route = xenv_pcidev_irq_route[pci_idsel - 1];+	int irq;++	irq = (int)((route >> (int_num * 8)) & 0x3); /* int_num: 0-3 = INTA-D */+	if (irq >= 0)+		irq += (IRQ_CONTROLLER_IRQ_BASE + LOG2_CPU_PCI_INTA);+	return(irq);+}++int tango2_isaide_irq_map(void)+{+	int irq = 0;++	if (tango2_isaide_enabled() == 0)+		return(-1);++	if (xenv_isaide_irq >= 0)+		irq = xenv_isaide_irq + (IRQ_CONTROLLER_IRQ_BASE + LOG2_CPU_PCI_INTA);+	return(irq);+}++int tango2_isaide_cs_select(void)+{+	int i;+	unsigned long cs_config = (gbus_read_uint32(pGBus, REG_BASE_host_interface + PB_CS_config) >> 12) & 0xf;++	if (tango2_isaide_enabled() == 0)+		return(-1);++	for (i = 0; i < 4; i++) {+		if ((cs_config & 0x1) != 0)+			return(i);+		else+			cs_config >>= 1;+	}+	return(-1);+}++int tango2_isaide_timing_slot(void)+{+	return(xenv_isaide_timing_slot & 0x7);+}++#endif ++#if defined(CONFIG_TANGO2_SIG_BLOCK) || defined(CONFIG_TANGO2_XENV)++static int tango2_device_info(void)+{+	int i;++#if defined(CONFIG_TANGO2_SIG_BLOCK)+	printk("SMP863x Enabled Devices under Linux/SIGBLOCK = 0x%08lx\n ", sigptr->hwinfo.dev_enabled);+#else+	printk("SMP863x Enabled Devices under Linux/XENV 0x%08lx = 0x%08lx\n ", xenv_gbus_addr, xenv_enabled_devices);+#endif+	if (tango2_isaide_enabled())+		printk(" ISA/IDE");+	if (tango2_bmide_enabled())+		printk(" BM/IDE");+	if (tango2_pci_host_enabled())+		printk(" PCIHost");+	if (tango2_ethernet_enabled())+		printk(" Ethernet");+	if (tango2_ir_enabled())+		printk(" IR");+	if (tango2_fip_enabled())+		printk(" FIP");+	if (tango2_i2cm_enabled())+		printk(" I2CM");+	if (tango2_i2cs_enabled())+		printk(" I2CS");+	if (tango2_sdio_enabled())+		printk(" SDIO");+	if (tango2_usb_enabled())+		printk(" USB");+	for (i = 1; i <= 6; i++) {+		if (tango2_pcidev_enabled(i))+			printk(" PCIDev%d", i);+	}+	if (tango2_sata_enabled())+		printk(" SATA");+	if (tango2_scard_enabled())+		printk(" SCARD");+	if (tango2_gnet_enabled())+		printk(" GNET");+	printk("\n");+}++EXPORT_SYMBOL(tango2_pcidev_irq_map);+EXPORT_SYMBOL(tango2_isaide_irq_map);+EXPORT_SYMBOL(tango2_isaide_cs_select);+EXPORT_SYMBOL(tango2_isaide_timing_slot);+EXPORT_SYMBOL(tango2_isaide_enabled);+EXPORT_SYMBOL(tango2_bmide_enabled);+EXPORT_SYMBOL(tango2_sata_enabled);+EXPORT_SYMBOL(tango2_pci_host_enabled);+EXPORT_SYMBOL(tango2_ir_enabled);+EXPORT_SYMBOL(tango2_fip_enabled);+EXPORT_SYMBOL(tango2_ethernet_enabled);+EXPORT_SYMBOL(tango2_sdio_enabled);+EXPORT_SYMBOL(tango2_usb_enabled);+EXPORT_SYMBOL(tango2_scard_enabled);+EXPORT_SYMBOL(tango2_gnet_enabled);+EXPORT_SYMBOL(tango2_i2cm_enabled);+EXPORT_SYMBOL(tango2_i2cs_enabled);+EXPORT_SYMBOL(tango2_pcidev_enabled);+EXPORT_SYMBOL(tango2_ethernet_getmac);++#if defined(CONFIG_TANGO2_XENV)+EXPORT_SYMBOL(xenv_scard_5v_pin);+EXPORT_SYMBOL(xenv_scard_off_pin);+EXPORT_SYMBOL(xenv_scard_cmd_pin);+#endif++#endif /* CONFIG_TANGO2_SIG_BLOCK || defined(CONFIG_TANGO2_XENV) */++EXPORT_SYMBOL(tango2_get_sysclock);+EXPORT_SYMBOL(tango2_get_cpuclock);++RMuint32 gbus_read_dram_uint32(struct gbus *pgbus, RMuint32 byte_address);+RMuint16 gbus_read_dram_uint16(struct gbus *pgbus, RMuint32 byte_address);+RMuint8 gbus_read_dram_uint8(struct gbus *pgbus, RMuint32 byte_address);+void gbus_write_dram_uint32(struct gbus *pgbus, RMuint32 byte_address, RMuint32 data);+void gbus_write_dram_uint16(struct gbus *pgbus, RMuint32 byte_address, RMuint16 data);+void gbus_write_dram_uint8(struct gbus *pgbus, RMuint32 byte_address, RMuint8 data);++#define TMP_REMAPPED_REG   CPU_remap4+#define TMP_REMAPPED_BASE  CPU_remap4_address++static RMuint32 set_remap(RMuint32 remap_reg, RMuint32 value)+{+	RMuint32 orig = *((volatile RMuint32 *)KSEG1ADDR(REG_BASE_cpu_block + remap_reg));+	if (orig != value) {+		*((volatile RMuint32 *)KSEG1ADDR(REG_BASE_cpu_block + remap_reg)) = value;+		iob();+	}+	return(orig);+}++RMuint32 gbus_read_uint32(struct gbus *pgbus, RMuint32 byte_address)+{+	RMuint32 remap;+	RMuint32 tmp;++	if (byte_address < (MEM_BASE_dram_controller_0 + 0x10000000))+		return gbus_read_dram_uint32(pgbus, byte_address);+	else if (byte_address < (MEM_BASE_dram_controller_1 + 0x10000000))+#ifdef CONFIG_TANGO2_USE_TLB_REMAP_DRAM1 +		if (byte_address < (MEM_BASE_dra

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -