From owner-svn-src-all@freebsd.org Tue Apr 19 15:36:19 2016 Return-Path: Delivered-To: svn-src-all@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 CC6FFB14019; Tue, 19 Apr 2016 15:36:19 +0000 (UTC) (envelope-from br@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 836311200; Tue, 19 Apr 2016 15:36:19 +0000 (UTC) (envelope-from br@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u3JFaICx048496; Tue, 19 Apr 2016 15:36:18 GMT (envelope-from br@FreeBSD.org) Received: (from br@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u3JFaIYq048495; Tue, 19 Apr 2016 15:36:18 GMT (envelope-from br@FreeBSD.org) Message-Id: <201604191536.u3JFaIYq048495@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: br set sender to br@FreeBSD.org using -f From: Ruslan Bukin Date: Tue, 19 Apr 2016 15:36:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r298273 - head/sys/dev/xilinx X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2016 15:36:19 -0000 Author: br Date: Tue Apr 19 15:36:18 2016 New Revision: 298273 URL: https://svnweb.freebsd.org/changeset/base/298273 Log: Assert CS for single transfers. Modified: head/sys/dev/xilinx/axi_quad_spi.c Modified: head/sys/dev/xilinx/axi_quad_spi.c ============================================================================== --- head/sys/dev/xilinx/axi_quad_spi.c Tue Apr 19 15:18:31 2016 (r298272) +++ head/sys/dev/xilinx/axi_quad_spi.c Tue Apr 19 15:36:18 2016 (r298273) @@ -123,33 +123,6 @@ spi_probe(device_t dev) } static int -spi_chip_select(device_t dev, device_t child) -{ - struct spi_softc *sc; - uint32_t cs; - - sc = device_get_softc(dev); - - spibus_get_cs(child, &cs); - - WRITE4(sc, SPI_SSR, ~(1 << cs)); - - return (0); -} - -static int -spi_chip_deselect(device_t dev, device_t child) -{ - struct spi_softc *sc; - - sc = device_get_softc(dev); - - WRITE4(sc, SPI_SSR, ~0); - - return (0); -} - -static int spi_attach(device_t dev) { struct spi_softc *sc; @@ -207,6 +180,7 @@ static int spi_transfer(device_t dev, device_t child, struct spi_command *cmd) { struct spi_softc *sc; + uint32_t reg; uint32_t cs; sc = device_get_softc(dev); @@ -219,12 +193,22 @@ spi_transfer(device_t dev, device_t chil /* get the proper chip select */ spibus_get_cs(child, &cs); + /* Assert CS */ + reg = READ4(sc, SPI_SSR); + reg &= ~(1 << cs); + WRITE4(sc, SPI_SSR, reg); + /* Command */ spi_txrx(sc, cmd->tx_cmd, cmd->rx_cmd, cmd->tx_cmd_sz, cs); /* Data */ spi_txrx(sc, cmd->tx_data, cmd->rx_data, cmd->tx_data_sz, cs); + /* Deassert CS */ + reg = READ4(sc, SPI_SSR); + reg |= (1 << cs); + WRITE4(sc, SPI_SSR, reg); + return (0); } @@ -235,9 +219,6 @@ static device_method_t spi_methods[] = { /* SPI interface */ DEVMETHOD(spibus_transfer, spi_transfer), - DEVMETHOD(spibus_chip_select, spi_chip_select), - DEVMETHOD(spibus_chip_deselect, spi_chip_deselect), - DEVMETHOD_END };