diff options
author | ian <ian@FreeBSD.org> | 2014-01-05 22:36:34 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2014-01-05 22:36:34 +0000 |
commit | 420aa503c6704f4bb0c18541b7c7c193388555e1 (patch) | |
tree | e83eb08af479512a00f04c4a944ab592618fc11b /sys/dev/fdt | |
parent | 6f9ebfa0c3159b8dd19fa1a837691a7deaaa3842 (diff) | |
download | FreeBSD-src-420aa503c6704f4bb0c18541b7c7c193388555e1.zip FreeBSD-src-420aa503c6704f4bb0c18541b7c7c193388555e1.tar.gz |
Remove dev/fdt/fdt_pci.c, which was code specific to Marvell ARM SoCs,
related to setting up static device mappings. Since it was only used by
arm/mv/mv_pci.c, it's now just static functions within that file, plus
one public function that gets called only from arm/mv/mv_machdep.c.
Diffstat (limited to 'sys/dev/fdt')
-rw-r--r-- | sys/dev/fdt/fdt_common.h | 9 | ||||
-rw-r--r-- | sys/dev/fdt/fdt_pci.c | 211 |
2 files changed, 0 insertions, 220 deletions
diff --git a/sys/dev/fdt/fdt_common.h b/sys/dev/fdt/fdt_common.h index e8e274f..edc98fe 100644 --- a/sys/dev/fdt/fdt_common.h +++ b/sys/dev/fdt/fdt_common.h @@ -40,12 +40,6 @@ #define DI_MAX_INTR_NUM 32 -struct fdt_pci_range { - u_long base_pci; - u_long base_parent; - u_long len; -}; - struct fdt_sense_level { enum intr_trigger trig; enum intr_polarity pol; @@ -100,9 +94,6 @@ int fdt_is_enabled(phandle_t); int fdt_pm_is_enabled(phandle_t); int fdt_is_type(phandle_t, const char *); int fdt_parent_addr_cells(phandle_t); -int fdt_pci_ranges(phandle_t, struct fdt_pci_range *, struct fdt_pci_range *); -int fdt_pci_ranges_decode(phandle_t, struct fdt_pci_range *, - struct fdt_pci_range *); int fdt_ranges_verify(pcell_t *, int, int, int, int); int fdt_reg_to_rl(phandle_t, struct resource_list *); int fdt_pm(phandle_t); diff --git a/sys/dev/fdt/fdt_pci.c b/sys/dev/fdt/fdt_pci.c deleted file mode 100644 index 207b706..0000000 --- a/sys/dev/fdt/fdt_pci.c +++ /dev/null @@ -1,211 +0,0 @@ -/*- - * Copyright (c) 2010 The FreeBSD Foundation - * All rights reserved. - * - * This software was developed by Semihalf under sponsorship from - * the FreeBSD Foundation. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/ktr.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <sys/malloc.h> - -#include <dev/fdt/fdt_common.h> -#include <dev/pci/pcireg.h> - -#if defined(__arm__) -#include <vm/vm.h> -#include <vm/pmap.h> -#include <machine/devmap.h> -#include <machine/fdt.h> -#endif - -#include "ofw_bus_if.h" -#include "pcib_if.h" - -#ifdef DEBUG -#define debugf(fmt, args...) do { printf("%s(): ", __func__); \ - printf(fmt,##args); } while (0) -#else -#define debugf(fmt, args...) -#endif - -#define FDT_RANGES_CELLS ((3 + 3 + 2) * 2) - -static void -fdt_pci_range_dump(struct fdt_pci_range *range) -{ -#ifdef DEBUG - printf("\n"); - printf(" base_pci = 0x%08lx\n", range->base_pci); - printf(" base_par = 0x%08lx\n", range->base_parent); - printf(" len = 0x%08lx\n", range->len); -#endif -} - -int -fdt_pci_ranges_decode(phandle_t node, struct fdt_pci_range *io_space, - struct fdt_pci_range *mem_space) -{ - pcell_t ranges[FDT_RANGES_CELLS]; - struct fdt_pci_range *pci_space; - pcell_t addr_cells, size_cells, par_addr_cells; - pcell_t *rangesptr; - pcell_t cell0, cell1, cell2; - int tuple_size, tuples, i, rv, offset_cells, len; - - /* - * Retrieve 'ranges' property. - */ - if ((fdt_addrsize_cells(node, &addr_cells, &size_cells)) != 0) - return (EINVAL); - if (addr_cells != 3 || size_cells != 2) - return (ERANGE); - - par_addr_cells = fdt_parent_addr_cells(node); - if (par_addr_cells > 3) - return (ERANGE); - - len = OF_getproplen(node, "ranges"); - if (len > sizeof(ranges)) - return (ENOMEM); - - if (OF_getprop(node, "ranges", ranges, sizeof(ranges)) <= 0) - return (EINVAL); - - tuple_size = sizeof(pcell_t) * (addr_cells + par_addr_cells + - size_cells); - tuples = len / tuple_size; - - /* - * Initialize the ranges so that we don't have to worry about - * having them all defined in the FDT. In particular, it is - * perfectly fine not to want I/O space on PCI busses. - */ - bzero(io_space, sizeof(*io_space)); - bzero(mem_space, sizeof(*mem_space)); - - rangesptr = &ranges[0]; - offset_cells = 0; - for (i = 0; i < tuples; i++) { - cell0 = fdt_data_get((void *)rangesptr, 1); - rangesptr++; - cell1 = fdt_data_get((void *)rangesptr, 1); - rangesptr++; - cell2 = fdt_data_get((void *)rangesptr, 1); - rangesptr++; - - if (cell0 & 0x02000000) { - pci_space = mem_space; - } else if (cell0 & 0x01000000) { - pci_space = io_space; - } else { - rv = ERANGE; - goto out; - } - - if (par_addr_cells == 3) { - /* - * This is a PCI subnode 'ranges'. Skip cell0 and - * cell1 of this entry and only use cell2. - */ - offset_cells = 2; - rangesptr += offset_cells; - } - - if (fdt_data_verify((void *)rangesptr, par_addr_cells - - offset_cells)) { - rv = ERANGE; - goto out; - } - pci_space->base_parent = fdt_data_get((void *)rangesptr, - par_addr_cells - offset_cells); - rangesptr += par_addr_cells - offset_cells; - - if (fdt_data_verify((void *)rangesptr, size_cells)) { - rv = ERANGE; - goto out; - } - pci_space->len = fdt_data_get((void *)rangesptr, size_cells); - rangesptr += size_cells; - - pci_space->base_pci = cell2; - } - rv = 0; -out: - return (rv); -} - -int -fdt_pci_ranges(phandle_t node, struct fdt_pci_range *io_space, - struct fdt_pci_range *mem_space) -{ - int err; - - debugf("Processing PCI node: %x\n", node); - if ((err = fdt_pci_ranges_decode(node, io_space, mem_space)) != 0) { - debugf("could not decode parent PCI node 'ranges'\n"); - return (err); - } - - debugf("Post fixup dump:\n"); - fdt_pci_range_dump(io_space); - fdt_pci_range_dump(mem_space); - return (0); -} - -#if defined(__arm__) -int -fdt_pci_devmap(phandle_t node, struct arm_devmap_entry *devmap, vm_offset_t io_va, - vm_offset_t mem_va) -{ - struct fdt_pci_range io_space, mem_space; - int error; - - if ((error = fdt_pci_ranges_decode(node, &io_space, &mem_space)) != 0) - return (error); - - devmap->pd_va = (io_va ? io_va : io_space.base_parent); - devmap->pd_pa = io_space.base_parent; - devmap->pd_size = io_space.len; - devmap->pd_prot = VM_PROT_READ | VM_PROT_WRITE; - devmap->pd_cache = PTE_NOCACHE; - devmap++; - - devmap->pd_va = (mem_va ? mem_va : mem_space.base_parent); - devmap->pd_pa = mem_space.base_parent; - devmap->pd_size = mem_space.len; - devmap->pd_prot = VM_PROT_READ | VM_PROT_WRITE; - devmap->pd_cache = PTE_NOCACHE; - return (0); -} -#endif - |