From 4b3aada9d4cad30d6b07bd4502fb397a2ec47bd0 Mon Sep 17 00:00:00 2001 From: "Jayachandran C." Date: Tue, 27 Mar 2012 15:43:32 +0000 Subject: Resource allocation for XLP SoC SDHCI slots The on-chip SD slots do not have PCI BARs corresponding to them, so this has to be handled in the custom SoC memory allocation. Provide memory resource for rids corresponding to BAR 0 and 1 in the custom allocation code. --- sys/mips/conf/std.XLP | 5 +++++ sys/mips/nlm/xlp_pci.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) (limited to 'sys/mips') diff --git a/sys/mips/conf/std.XLP b/sys/mips/conf/std.XLP index ce71e3686c28..5f7b7ad22b4d 100644 --- a/sys/mips/conf/std.XLP +++ b/sys/mips/conf/std.XLP @@ -110,3 +110,8 @@ options GEOM_ELI # NOR device cfi device cfid + +# MMC/SD +device mmc # MMC/SD bus +device mmcsd # MMC/SD memory card +device sdhci # Generic PCI SD Host Controller diff --git a/sys/mips/nlm/xlp_pci.c b/sys/mips/nlm/xlp_pci.c index ef0f4f873447..4b58db13b653 100644 --- a/sys/mips/nlm/xlp_pci.c +++ b/sys/mips/nlm/xlp_pci.c @@ -165,8 +165,22 @@ xlp_pci_alloc_resource(device_t bus, device_t child, int type, int *rid, /* no emulation for IO ports */ if (type == SYS_RES_IOPORT) return (NULL); + start = xlp_devinfo->mem_res_start; count = XLP_PCIE_CFG_SIZE - XLP_IO_PCI_HDRSZ; + + /* MMC needs to 2 slots with rids 16 and 20 and a + * fixup for size */ + if (pci_get_device(child) == PCI_DEVICE_ID_NLM_MMC) { + count = 0x100; + if (*rid == 16) + ; /* first slot already setup */ + else if (*rid == 20) + start += 0x100; /* second slot */ + else + return (NULL); + } + end = start + count - 1; r = BUS_ALLOC_RESOURCE(device_get_parent(bus), child, type, rid, start, end, count, flags); @@ -254,6 +268,8 @@ xlp_add_soc_child(device_t pcib, device_t dev, int b, int s, int f) xlp_dinfo = (struct xlp_devinfo *)dinfo; xlp_dinfo->irq = irq; xlp_dinfo->flags = flags; + + /* memory resource from ecfg space, if MEM_RES_EMUL is set */ if ((flags & MEM_RES_EMUL) != 0) xlp_dinfo->mem_res_start = XLP_DEFAULT_IO_BASE + devoffset + XLP_IO_PCI_HDRSZ; -- cgit v1.2.3