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