linux/drivers/net/dsa/microchip/ksz_spi.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0
   2 * Microchip KSZ series SPI access common header
   3 *
   4 * Copyright (C) 2017-2018 Microchip Technology Inc.
   5 *      Tristram Ha <Tristram.Ha@microchip.com>
   6 */
   7
   8#ifndef __KSZ_SPI_H
   9#define __KSZ_SPI_H
  10
  11/* Chip dependent SPI access */
  12static int ksz_spi_read(struct ksz_device *dev, u32 reg, u8 *data,
  13                        unsigned int len);
  14static int ksz_spi_write(struct ksz_device *dev, u32 reg, void *data,
  15                         unsigned int len);
  16
  17static int ksz_spi_read8(struct ksz_device *dev, u32 reg, u8 *val)
  18{
  19        return ksz_spi_read(dev, reg, val, 1);
  20}
  21
  22static int ksz_spi_read16(struct ksz_device *dev, u32 reg, u16 *val)
  23{
  24        int ret = ksz_spi_read(dev, reg, (u8 *)val, 2);
  25
  26        if (!ret)
  27                *val = be16_to_cpu(*val);
  28
  29        return ret;
  30}
  31
  32static int ksz_spi_read32(struct ksz_device *dev, u32 reg, u32 *val)
  33{
  34        int ret = ksz_spi_read(dev, reg, (u8 *)val, 4);
  35
  36        if (!ret)
  37                *val = be32_to_cpu(*val);
  38
  39        return ret;
  40}
  41
  42static int ksz_spi_write8(struct ksz_device *dev, u32 reg, u8 value)
  43{
  44        return ksz_spi_write(dev, reg, &value, 1);
  45}
  46
  47static int ksz_spi_write16(struct ksz_device *dev, u32 reg, u16 value)
  48{
  49        value = cpu_to_be16(value);
  50        return ksz_spi_write(dev, reg, &value, 2);
  51}
  52
  53static int ksz_spi_write32(struct ksz_device *dev, u32 reg, u32 value)
  54{
  55        value = cpu_to_be32(value);
  56        return ksz_spi_write(dev, reg, &value, 4);
  57}
  58
  59static int ksz_spi_get(struct ksz_device *dev, u32 reg, void *data, size_t len)
  60{
  61        return ksz_spi_read(dev, reg, data, len);
  62}
  63
  64static int ksz_spi_set(struct ksz_device *dev, u32 reg, void *data, size_t len)
  65{
  66        return ksz_spi_write(dev, reg, data, len);
  67}
  68
  69#endif
  70