|  | // Copyright 2019 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | library ddk.protocol.spiimpl; | 
|  |  | 
|  | using zx; | 
|  |  | 
|  | /// Low-level protocol for spi drivers. | 
|  | [Layout = "ddk-protocol"] | 
|  | protocol SpiImpl { | 
|  | /// Returns the number of chip select lines available or provided by the driver instance. | 
|  | /// To be used as a limit on the acceptable values for the `cs' field in the Exchange() method. | 
|  | GetChipSelectCount() -> (uint32 count); | 
|  |  | 
|  | /// Perform a SPI bus transaction of the specified length. Either txdata or rxdata may be | 
|  | /// NULL, in which case the transaction will be half-duplex in the appropriate direction. | 
|  | /// Regardless, both vectors must have the same length. | 
|  | Exchange(uint32 cs, vector<uint8>? txdata) -> (zx.status status, | 
|  | vector<uint8> rxdata); | 
|  | }; |