FreeBSD Bugzilla – Attachment 165546 Details for
Bug 206227
[patch] Teach mx25l SPI flash driver to interact with fdt_slicer and geom_flashmap
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
Teach mx25l SPI flash driver to interact with fdt_slicer and geom_flashmap
mx25l_fdt_slicer.diff (text/plain), 3.14 KB, created by
Stanislav Galabov
on 2016-01-14 08:13:42 UTC
(
hide
)
Description:
Teach mx25l SPI flash driver to interact with fdt_slicer and geom_flashmap
Filename:
MIME Type:
Creator:
Stanislav Galabov
Created:
2016-01-14 08:13:42 UTC
Size:
3.14 KB
patch
obsolete
>commit 1dd1a94fc102694ee45ad25abad39990d6a10f18 >Author: Stanislav Galabov <stanislav_galabov@smartcom.bg> >Date: Tue Jan 5 02:15:37 2016 +0200 > > Teach MX25L SPI flash driver and geom_flashmap to interact with each other; Enable geom_flashmap and fdt_slicer when fdt and mx25l are in use > >diff --git a/sys/conf/files b/sys/conf/files >index feac6c0..43cb344 100644 >--- a/sys/conf/files >+++ b/sys/conf/files >@@ -1419,7 +1419,7 @@ dev/fdt/fdt_clock_if.m optional fdt fdt_clock > dev/fdt/fdt_common.c optional fdt > dev/fdt/fdt_pinctrl.c optional fdt fdt_pinctrl > dev/fdt/fdt_pinctrl_if.m optional fdt fdt_pinctrl >-dev/fdt/fdt_slicer.c optional fdt cfi | fdt nand >+dev/fdt/fdt_slicer.c optional fdt cfi | fdt nand | fdt mx25l > dev/fdt/fdt_static_dtb.S optional fdt fdt_dtb_static \ > dependency "$S/boot/fdt/dts/${MACHINE}/${FDT_DTS_FILE}" > dev/fdt/simplebus.c optional fdt >@@ -3010,7 +3010,7 @@ geom/geom_disk.c standard > geom/geom_dump.c standard > geom/geom_event.c standard > geom/geom_fox.c optional geom_fox >-geom/geom_flashmap.c optional fdt cfi | fdt nand >+geom/geom_flashmap.c optional fdt cfi | fdt nand | fdt mx25l > geom/geom_io.c standard > geom/geom_kern.c standard > geom/geom_map.c optional geom_map >diff --git a/sys/dev/flash/mx25l.c b/sys/dev/flash/mx25l.c >index d9aaa1c..c4dad4b 100644 >--- a/sys/dev/flash/mx25l.c >+++ b/sys/dev/flash/mx25l.c >@@ -93,6 +93,7 @@ static int mx25l_open(struct disk *dp); > static int mx25l_close(struct disk *dp); > static int mx25l_ioctl(struct disk *, u_long, void *, int, struct thread *); > static void mx25l_strategy(struct bio *bp); >+static int mx25l_getattr(struct bio *bp); > static void mx25l_task(void *arg); > > struct mx25l_flash_ident flash_devices[] = { >@@ -383,6 +384,7 @@ mx25l_attach(device_t dev) > sc->sc_disk->d_open = mx25l_open; > sc->sc_disk->d_close = mx25l_close; > sc->sc_disk->d_strategy = mx25l_strategy; >+ sc->sc_disk->d_getattr = mx25l_getattr; > sc->sc_disk->d_ioctl = mx25l_ioctl; > sc->sc_disk->d_name = "flash/spi"; > sc->sc_disk->d_drv1 = sc; >@@ -448,6 +450,27 @@ mx25l_strategy(struct bio *bp) > M25PXX_UNLOCK(sc); > } > >+static int >+mx25l_getattr(struct bio *bp) >+{ >+ struct mx25l_softc *sc; >+ device_t dev; >+ >+ if (bp->bio_disk == NULL || bp->bio_disk->d_drv1 == NULL) >+ return (ENXIO); >+ >+ sc = bp->bio_disk->d_drv1; >+ dev = sc->sc_dev; >+ >+ if (strcmp(bp->bio_attribute, "SPI::device") == 0) { >+ if (bp->bio_length != sizeof(dev)) >+ return (EFAULT); >+ bcopy(&dev, bp->bio_data, sizeof(dev)); >+ } else >+ return (-1); >+ return (0); >+} >+ > static void > mx25l_task(void *arg) > { >diff --git a/sys/geom/geom_flashmap.c b/sys/geom/geom_flashmap.c >index 0383f69..76dd1fa 100644 >--- a/sys/geom/geom_flashmap.c >+++ b/sys/geom/geom_flashmap.c >@@ -190,8 +190,12 @@ g_flashmap_taste(struct g_class *mp, struct g_provider *pp, int flags) > size = sizeof(device_t); > if (g_io_getattr("NAND::device", cp, &size, &dev)) { > size = sizeof(device_t); >- if (g_io_getattr("CFI::device", cp, &size, &dev)) >- break; >+ if (g_io_getattr("CFI::device", cp, &size, &dev)) { >+ size = sizeof(device_t); >+ if (g_io_getattr("SPI::device", cp, &size, >+ &dev)) >+ break; >+ } > } > > nslices = g_flashmap_load(dev, &head);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 206227
: 165546