brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · 5bcf91f Raw
70 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (c) 2010 ASIX Electronics Corporation4 * Copyright (c) 2020 Samsung Electronics Co., Ltd.5 *6 * ASIX AX88796C SPI Fast Ethernet Linux driver7 */8 9#ifndef _AX88796C_SPI_H10#define _AX88796C_SPI_H11 12#include <linux/spi/spi.h>13#include <linux/types.h>14 15/* Definition of SPI command */16#define AX_SPICMD_WRITE_TXQ		0x0217#define AX_SPICMD_READ_REG		0x0318#define AX_SPICMD_READ_STATUS		0x0519#define AX_SPICMD_READ_RXQ		0x0B20#define AX_SPICMD_BIDIR_WRQ		0xB221#define AX_SPICMD_WRITE_REG		0xD822#define AX_SPICMD_EXIT_PWD		0xAB23 24extern const u8 ax88796c_rx_cmd_buf[];25extern const u8 ax88796c_tx_cmd_buf[];26 27struct axspi_data {28	struct spi_device	*spi;29	struct spi_message	rx_msg;30	struct spi_transfer	spi_rx_xfer[2];31	u8			cmd_buf[6];32	u8			rx_buf[6];33	u8			comp;34};35 36struct spi_status {37	u16 isr;38	u8 status;39#	define AX_STATUS_READY		0x8040};41 42int axspi_read_rxq(struct axspi_data *ax_spi, void *data, int len);43int axspi_write_txq(const struct axspi_data *ax_spi, void *data, int len);44u16 axspi_read_reg(struct axspi_data *ax_spi, u8 reg);45int axspi_write_reg(struct axspi_data *ax_spi, u8 reg, u16 value);46int axspi_read_status(struct axspi_data *ax_spi, struct spi_status *status);47int axspi_wakeup(struct axspi_data *ax_spi);48 49static inline u16 AX_READ(struct axspi_data *ax_spi, u8 offset)50{51	return axspi_read_reg(ax_spi, offset);52}53 54static inline int AX_WRITE(struct axspi_data *ax_spi, u16 value, u8 offset)55{56	return axspi_write_reg(ax_spi, offset, value);57}58 59static inline int AX_READ_STATUS(struct axspi_data *ax_spi,60				 struct spi_status *status)61{62	return axspi_read_status(ax_spi, status);63}64 65static inline int AX_WAKEUP(struct axspi_data *ax_spi)66{67	return axspi_wakeup(ax_spi);68}69#endif70