Date: Thu, 14 Mar 2013 18:09:44 GMT From: Brooks Davis <brooks@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 222848 for review Message-ID: <201303141809.r2EI9i1Y061536@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@222848?ac=10 Change 222848 by brooks@brooks_zenith on 2013/03/14 18:09:37 Integrate from FreeBSD/BERI. Switch most partitioning to geom_flashmap.c. Affected files ... .. //depot/projects/ctsrd/cheribsd/src/sys/boot/fdt/dts/beripad-de4.dts#6 integrate .. //depot/projects/ctsrd/cheribsd/src/sys/dev/cfi/cfi_disk.c#4 integrate .. //depot/projects/ctsrd/cheribsd/src/sys/geom/geom_flashmap.c#3 integrate .. //depot/projects/ctsrd/cheribsd/src/sys/mips/conf/BERI_DE4.hints#14 integrate Differences ... ==== //depot/projects/ctsrd/cheribsd/src/sys/boot/fdt/dts/beripad-de4.dts#6 (text+ko) ==== @@ -1,5 +1,6 @@ /*- * Copyright (c) 2012-2013 Robert N. M. Watson + * Copyright (c) 2013 SRI International * All rights reserved. * * This software was developed by SRI International and the University of @@ -100,8 +101,40 @@ * Ethernet addresses for now. */ flash@74000000 { + #address-cells = <1>; + #size-cells = <1>; compatible = "cfi-flash"; reg = <0x74000000 0x4000000>; + + /* Board configuration */ + partition@0 { + reg = <0x0 0x20000>; + label = "config"; + }; + + /* Power up FPGA image */ + partition@20000 { + reg = <0x20000 0xc00000>; + label = "fpga0"; + }; + + /* Secondary FPGA image (on RE_CONFIGn button) */ + partition@C20000 { + reg = <0xc20000 0xc00000>; + label = "fpga1"; + }; + + /* Space for operating system use */ + partition@1820000 { + reg = <0x1820000 0x027c0000>; + label = "os"; + }; + + /* Second stage bootloader */ + parition@3fe0000 { + reg = <0x3fe0000 0x20000>; + label = "boot"; + }; }; ethernet@7f007000 { ==== //depot/projects/ctsrd/cheribsd/src/sys/dev/cfi/cfi_disk.c#4 (text+ko) ==== @@ -44,6 +44,7 @@ #include <dev/cfi/cfi_var.h> +#include <geom/geom.h> #include <geom/geom_disk.h> struct cfi_disk_softc { @@ -64,9 +65,11 @@ static int cfi_disk_open(struct disk *); static int cfi_disk_close(struct disk *); static void cfi_io_proc(void *, int); +static int cfi_disk_getattr(struct bio *); static void cfi_disk_strategy(struct bio *); static int cfi_disk_ioctl(struct disk *, u_long, void *, int, struct thread *); + static int cfi_disk_probe(device_t dev) { @@ -95,6 +98,7 @@ sc->disk->d_strategy = cfi_disk_strategy; sc->disk->d_ioctl = cfi_disk_ioctl; sc->disk->d_dump = NULL; /* NB: no dumps */ + sc->disk->d_getattr = cfi_disk_getattr; sc->disk->d_sectorsize = CFI_DISK_SECSIZE; sc->disk->d_mediasize = sc->parent->sc_size; sc->disk->d_maxsize = CFI_DISK_MAXIOSIZE; @@ -275,6 +279,31 @@ } } +static int +cfi_disk_getattr(struct bio *bp) +{ + struct cfi_disk_softc *dsc; + struct cfi_softc *sc; + device_t dev; + + if (bp->bio_disk == NULL || bp->bio_disk->d_drv1 == NULL) + return (ENXIO); + + dsc = bp->bio_disk->d_drv1; + sc = dsc->parent; + dev = sc->sc_dev; + + do { + if (g_handleattr(bp, "CFI::device", &dev, sizeof(device_t))) + break; + + return (ERESTART); + } while(0); + + return (EJUSTRETURN); +} + + static void cfi_disk_strategy(struct bio *bp) { ==== //depot/projects/ctsrd/cheribsd/src/sys/geom/geom_flashmap.c#3 (text+ko) ==== @@ -174,7 +174,7 @@ g_topology_assert(); if (flags == G_TF_NORMAL && - !strcmp(pp->geom->class->name, FLASHMAP_CLASS_NAME)) + strcmp(pp->geom->class->name, "DISK") != 0) return (NULL); gp = g_slice_new(mp, FLASH_SLICES_MAX_NUM, pp, &cp, NULL, 0, @@ -186,8 +186,11 @@ do { size = sizeof(device_t); - if (g_io_getattr("NAND::device", cp, &size, &dev)) - break; + if (g_io_getattr("NAND::device", cp, &size, &dev)) { + size = sizeof(device_t); + if (g_io_getattr("CFI::device", cp, &size, &dev)) + break; + } nslices = g_flashmap_load(dev, &head); if (nslices == 0) ==== //depot/projects/ctsrd/cheribsd/src/sys/mips/conf/BERI_DE4.hints#14 (text+ko) ==== @@ -1,67 +1,16 @@ # $FreeBSD: head/sys/mips/conf/BERI_DE4.hints 239713 2012-08-26 10:40:13Z rwatson $ -# Reserved configuration blocks. Don't touch. -hint.map.0.at="cfid0" +# Hardwired location of bitfile +hint.map.0.at="cfid0s.fpga0" hint.map.0.start=0x00000000 -hint.map.0.end=0x00020000 -hint.map.0.name="config" -hint.map.0.readonly=1 - -# Hardwired location of bitfile -hint.map.1.at="cfid0" -hint.map.1.start=0x00020000 -hint.map.1.end=0x01820000 -hint.map.1.name="fpga" - -# Currently unused space on the first chip -# XXX: To be merged with the kernel map when we begin using the boot loader -hint.map.2.at="cfid0" -hint.map.2.start=0x01820000 -hint.map.2.end=0x02000000 -hint.map.2.name="reserved" +hint.map.0.end=0x00c00000 +hint.map.0.name="fpga" # Kernel on the second chip -hint.map.3.at="cfid0" -hint.map.3.start=0x02000000 -hint.map.3.end=0x03fe0000 -hint.map.3.name="kernel" - -# Area for use by the boot loader -hint.map.4.at="cfid0" -hint.map.4.start=0x03fe0000 -hint.map.4.end=0x04000000 -hint.map.4.name="boot" - -# Reserved configuration blocks. Don't touch. -hint.map.5.at="isf0" -hint.map.5.start=0x00000000 -hint.map.5.end=0x00020000 -hint.map.5.name="config" -hint.map.5.readonly=1 - -# Hardwired location of bitfile -hint.map.6.at="isf0" -hint.map.6.start=0x00020000 -hint.map.6.end=0x01820000 -hint.map.6.name="fpga" - -# Currently unused space on the first chip -hint.map.7.at="isf0" -hint.map.7.start=0x01820000 -hint.map.7.end=0x02000000 -hint.map.7.name="reserved" - -# Kernel on the second chip -hint.map.8.at="isf1" -hint.map.8.start=0x00000000 -hint.map.8.end=0x01fe0000 -hint.map.8.name="kernel" - -# Area for use by the boot loader -hint.map.10.at="isf1" -hint.map.10.start=0x01fe0000 -hint.map.10.end=0x02000000 -hint.map.10.name="kernel" +hint.map.1.at="cfid0s.os" +hint.map.1.start=0x007e0000 +hint.map.1.end=0x01fe0000 +hint.map.1.name="kernel" # Altera Triple-Speed Ethernet Mac, present in tPad and DE-4 configurations # configured from fdt(4) but PHYs are still described in here.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303141809.r2EI9i1Y061536>