uboot/arch/sandbox/include/asm/spi.h
<<
>>
Prefs
   1/*
   2 * Simulate a SPI port and clients (see README.sandbox for details)
   3 *
   4 * Copyright (c) 2011-2013 The Chromium OS Authors.
   5 * See file CREDITS for list of people who contributed to this
   6 * project.
   7 *
   8 * Licensed under the GPL-2 or later.
   9 */
  10
  11#ifndef __ASM_SPI_H__
  12#define __ASM_SPI_H__
  13
  14#include <linux/types.h>
  15
  16/*
  17 * The interface between the SPI bus and the SPI client.  The bus will
  18 * instantiate a client, and that then call into it via these entry
  19 * points.  These should be enough for the client to emulate the SPI
  20 * device just like the real hardware.
  21 */
  22struct sandbox_spi_emu_ops {
  23        /* The bus wants to instantiate a new client, so setup everything */
  24        int (*setup)(void **priv, const char *spec);
  25        /* The bus is done with us, so break things down */
  26        void (*free)(void *priv);
  27        /* The CS has been "activated" -- we won't worry about low/high */
  28        void (*cs_activate)(void *priv);
  29        /* The CS has been "deactivated" -- we won't worry about low/high */
  30        void (*cs_deactivate)(void *priv);
  31        /* The client is rx-ing bytes from the bus, so it should tx some */
  32        int (*xfer)(void *priv, const u8 *rx, u8 *tx, uint bytes);
  33};
  34
  35/*
  36 * Extract the bus/cs from the spi spec and return the start of the spi
  37 * client spec.  If the bus/cs are invalid for the current config, then
  38 * it returns NULL.
  39 *
  40 * Example: arg="0:1:foo" will set bus to 0, cs to 1, and return "foo"
  41 */
  42const char *sandbox_spi_parse_spec(const char *arg, unsigned long *bus,
  43                                   unsigned long *cs);
  44
  45#endif
  46