123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (c) 2010 ASIX Electronics Corporation
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
- *
- * ASIX AX88796C SPI Fast Ethernet Linux driver
- */
- #ifndef _AX88796C_SPI_H
- #define _AX88796C_SPI_H
- #include <linux/spi/spi.h>
- #include <linux/types.h>
- /* Definition of SPI command */
- #define AX_SPICMD_WRITE_TXQ 0x02
- #define AX_SPICMD_READ_REG 0x03
- #define AX_SPICMD_READ_STATUS 0x05
- #define AX_SPICMD_READ_RXQ 0x0B
- #define AX_SPICMD_BIDIR_WRQ 0xB2
- #define AX_SPICMD_WRITE_REG 0xD8
- #define AX_SPICMD_EXIT_PWD 0xAB
- extern const u8 ax88796c_rx_cmd_buf[];
- extern const u8 ax88796c_tx_cmd_buf[];
- struct axspi_data {
- struct spi_device *spi;
- struct spi_message rx_msg;
- struct spi_transfer spi_rx_xfer[2];
- u8 cmd_buf[6];
- u8 rx_buf[6];
- u8 comp;
- };
- struct spi_status {
- u16 isr;
- u8 status;
- # define AX_STATUS_READY 0x80
- };
- int axspi_read_rxq(struct axspi_data *ax_spi, void *data, int len);
- int axspi_write_txq(const struct axspi_data *ax_spi, void *data, int len);
- u16 axspi_read_reg(struct axspi_data *ax_spi, u8 reg);
- int axspi_write_reg(struct axspi_data *ax_spi, u8 reg, u16 value);
- int axspi_read_status(struct axspi_data *ax_spi, struct spi_status *status);
- int axspi_wakeup(struct axspi_data *ax_spi);
- static inline u16 AX_READ(struct axspi_data *ax_spi, u8 offset)
- {
- return axspi_read_reg(ax_spi, offset);
- }
- static inline int AX_WRITE(struct axspi_data *ax_spi, u16 value, u8 offset)
- {
- return axspi_write_reg(ax_spi, offset, value);
- }
- static inline int AX_READ_STATUS(struct axspi_data *ax_spi,
- struct spi_status *status)
- {
- return axspi_read_status(ax_spi, status);
- }
- static inline int AX_WAKEUP(struct axspi_data *ax_spi)
- {
- return axspi_wakeup(ax_spi);
- }
- #endif
|