^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * atusb.h - Definitions shared between kernel and ATUSB firmware
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Written 2013 by Werner Almesberger <werner@almesberger.net>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * (at your option) any later version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * This file should be identical for kernel and firmware.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * Kernel: drivers/net/ieee802154/atusb.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * Firmware: ben-wpan/atusb/fw/include/atusb/atusb.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #ifndef _ATUSB_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define _ATUSB_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define ATUSB_VENDOR_ID 0x20b7 /* Qi Hardware*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define ATUSB_PRODUCT_ID 0x1540 /* 802.15.4, device 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /* -- - - */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define ATUSB_BUILD_SIZE 256 /* maximum build version/date message length */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) /* Commands to our device. Make sure this is synced with the firmware */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) enum atusb_requests {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) ATUSB_ID = 0x00, /* system status/control grp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) ATUSB_BUILD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) ATUSB_RESET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) ATUSB_RF_RESET = 0x10, /* debug/test group */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) ATUSB_POLL_INT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) ATUSB_TEST, /* atusb-sil only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) ATUSB_TIMER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) ATUSB_GPIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) ATUSB_SLP_TR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) ATUSB_GPIO_CLEANUP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) ATUSB_REG_WRITE = 0x20, /* transceiver group */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) ATUSB_REG_READ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) ATUSB_BUF_WRITE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) ATUSB_BUF_READ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) ATUSB_SRAM_WRITE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) ATUSB_SRAM_READ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) ATUSB_SPI_WRITE = 0x30, /* SPI group */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) ATUSB_SPI_READ1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) ATUSB_SPI_READ2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) ATUSB_SPI_WRITE2_SYNC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) ATUSB_RX_MODE = 0x40, /* HardMAC group */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) ATUSB_TX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) ATUSB_EUI64_WRITE = 0x50, /* Parameter in EEPROM grp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) ATUSB_EUI64_READ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) ATUSB_HW_TYPE_100813, /* 2010-08-13 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) ATUSB_HW_TYPE_101216, /* 2010-12-16 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) ATUSB_HW_TYPE_110131, /* 2011-01-31, ATmega32U2-based */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) ATUSB_HW_TYPE_RZUSB, /* Atmel Raven USB dongle with at86rf230 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) ATUSB_HW_TYPE_HULUSB, /* Busware HUL USB dongle with at86rf212 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) * Direction bRequest wValue wIndex wLength
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) * ->host ATUSB_ID - - 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) * ->host ATUSB_BUILD - - #bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) * host-> ATUSB_RESET - - 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) * host-> ATUSB_RF_RESET - - 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) * ->host ATUSB_POLL_INT - - 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) * host-> ATUSB_TEST - - 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) * ->host ATUSB_TIMER - - #bytes (6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) * ->host ATUSB_GPIO dir+data mask+p# 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) * host-> ATUSB_SLP_TR - - 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) * host-> ATUSB_GPIO_CLEANUP - - 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) * host-> ATUSB_REG_WRITE value addr 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) * ->host ATUSB_REG_READ - addr 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) * host-> ATUSB_BUF_WRITE - - #bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) * ->host ATUSB_BUF_READ - - #bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) * host-> ATUSB_SRAM_WRITE - addr #bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) * ->host ATUSB_SRAM_READ - addr #bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) * host-> ATUSB_SPI_WRITE byte0 byte1 #bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) * ->host ATUSB_SPI_READ1 byte0 - #bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) * ->host ATUSB_SPI_READ2 byte0 byte1 #bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) * ->host ATUSB_SPI_WRITE2_SYNC byte0 byte1 0/1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) * host-> ATUSB_RX_MODE on - 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) * host-> ATUSB_TX flags ack_seq #bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) * host-> ATUSB_EUI64_WRITE - - #bytes (8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) * ->host ATUSB_EUI64_READ - - #bytes (8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) #define ATUSB_REQ_FROM_DEV (USB_TYPE_VENDOR | USB_DIR_IN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) #define ATUSB_REQ_TO_DEV (USB_TYPE_VENDOR | USB_DIR_OUT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #endif /* !_ATUSB_H */