From owner-svn-src-head@freebsd.org Fri Jan 22 03:15:54 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 77FEBA8CC41; Fri, 22 Jan 2016 03:15:54 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 302D91393; Fri, 22 Jan 2016 03:15:54 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u0M3Frx6092650; Fri, 22 Jan 2016 03:15:53 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u0M3FruS092649; Fri, 22 Jan 2016 03:15:53 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <201601220315.u0M3FruS092649@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Fri, 22 Jan 2016 03:15:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r294544 - head/sys/dev/flash X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jan 2016 03:15:54 -0000 Author: adrian Date: Fri Jan 22 03:15:53 2016 New Revision: 294544 URL: https://svnweb.freebsd.org/changeset/base/294544 Log: [flash] Teach mx25l SPI flash driver to interact with fdt_slicer and geom_flashmap This teaches the mx25l driver (sys/dev/flash/mx25l.c) to interact with sys/dev/fdt/fdt_slicer.c and sys/geom/geom_flashmap.c. This allows systems with SPI flash to benefit from the possibility to define flash 'slices' via FDT, just the same way that it's currently possible for CFI and NAND flashes. Tested: * Carambola 2, AR9331 + SPI NOR flash PR: kern/206227 Submitted by: Stanislav Galabov Modified: head/sys/dev/flash/mx25l.c Modified: head/sys/dev/flash/mx25l.c ============================================================================== --- head/sys/dev/flash/mx25l.c Fri Jan 22 03:02:38 2016 (r294543) +++ head/sys/dev/flash/mx25l.c Fri Jan 22 03:15:53 2016 (r294544) @@ -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) {