ULINK driver: Remove typedefs in OpenULINK firmware: Use typedefs from stdint.h (uint8_t, uint16_t) instead of custom typedefs in shorttypes.h (u8, u16, ...)
Signed-off-by: Martin Schmölzer <martin.schmoelzer@student.tuwien.ac.at>
This commit is contained in:
parent
ea7c87e5e7
commit
70d9d808e5
|
@ -61,8 +61,7 @@ HEADERS = $(INCLUDE_DIR)/main.h \
|
||||||
$(INCLUDE_DIR)/delay.h \
|
$(INCLUDE_DIR)/delay.h \
|
||||||
$(INCLUDE_DIR)/reg_ezusb.h \
|
$(INCLUDE_DIR)/reg_ezusb.h \
|
||||||
$(INCLUDE_DIR)/io.h \
|
$(INCLUDE_DIR)/io.h \
|
||||||
$(INCLUDE_DIR)/msgtypes.h \
|
$(INCLUDE_DIR)/msgtypes.h
|
||||||
$(INCLUDE_DIR)/shorttypes.h
|
|
||||||
|
|
||||||
# Disable all built-in rules.
|
# Disable all built-in rules.
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
#ifndef __DELAY_H
|
#ifndef __DELAY_H
|
||||||
#define __DELAY_H
|
#define __DELAY_H
|
||||||
|
|
||||||
#include "shorttypes.h"
|
#include <stdint.h>
|
||||||
|
|
||||||
#define NOP {__asm nop __endasm;}
|
#define NOP {__asm nop __endasm;}
|
||||||
|
|
||||||
void delay_5us(void);
|
void delay_5us(void);
|
||||||
void delay_1ms(void);
|
void delay_1ms(void);
|
||||||
|
|
||||||
void delay_us(u16 delay);
|
void delay_us(uint16_t delay);
|
||||||
void delay_ms(u16 delay);
|
void delay_ms(uint16_t delay);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,28 +21,28 @@
|
||||||
#ifndef __JTAG_H
|
#ifndef __JTAG_H
|
||||||
#define __JTAG_H
|
#define __JTAG_H
|
||||||
|
|
||||||
#include "shorttypes.h"
|
#include <stdint.h>
|
||||||
|
|
||||||
#define NOP {__asm nop __endasm;}
|
#define NOP {__asm nop __endasm;}
|
||||||
|
|
||||||
void jtag_scan_in(u8 out_offset, u8 in_offset);
|
void jtag_scan_in(uint8_t out_offset, uint8_t in_offset);
|
||||||
void jtag_slow_scan_in(u8 out_offset, u8 in_offset);
|
void jtag_slow_scan_in(uint8_t out_offset, uint8_t in_offset);
|
||||||
|
|
||||||
void jtag_scan_out(u8 out_offset);
|
void jtag_scan_out(uint8_t out_offset);
|
||||||
void jtag_slow_scan_out(u8 out_offset);
|
void jtag_slow_scan_out(uint8_t out_offset);
|
||||||
|
|
||||||
void jtag_scan_io(u8 out_offset, u8 in_offset);
|
void jtag_scan_io(uint8_t out_offset, uint8_t in_offset);
|
||||||
void jtag_slow_scan_io(u8 out_offset, u8 in_offset);
|
void jtag_slow_scan_io(uint8_t out_offset, uint8_t in_offset);
|
||||||
|
|
||||||
void jtag_clock_tck(u16 count);
|
void jtag_clock_tck(uint16_t count);
|
||||||
void jtag_slow_clock_tck(u16 count);
|
void jtag_slow_clock_tck(uint16_t count);
|
||||||
void jtag_clock_tms(u8 count, u8 sequence);
|
void jtag_clock_tms(uint8_t count, uint8_t sequence);
|
||||||
void jtag_slow_clock_tms(u8 count, u8 sequence);
|
void jtag_slow_clock_tms(uint8_t count, uint8_t sequence);
|
||||||
|
|
||||||
u16 jtag_get_signals(void);
|
uint16_t jtag_get_signals(void);
|
||||||
void jtag_set_signals(u8 low, u8 high);
|
void jtag_set_signals(uint8_t low, uint8_t high);
|
||||||
|
|
||||||
void jtag_configure_tck_delay(u8 scan_in, u8 scan_out, u8 scan_io, u8 tck,
|
void jtag_configure_tck_delay(uint8_t scan_in, uint8_t scan_out,
|
||||||
u8 tms);
|
uint8_t scan_io, uint8_t tck, uint8_t tms);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#ifndef __PROTOCOL_H
|
#ifndef __PROTOCOL_H
|
||||||
#define __PROTOCOL_H
|
#define __PROTOCOL_H
|
||||||
|
|
||||||
#include "shorttypes.h"
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2011 by Martin Schmoelzer *
|
|
||||||
* <martin.schmoelzer@student.tuwien.ac.at> *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, write to the *
|
|
||||||
* Free Software Foundation, Inc., *
|
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#ifndef __SHORTTYPES_H
|
|
||||||
#define __SHORTTYPES_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file Integer type definitions for shorter code (easier to stay within 80
|
|
||||||
* character maximum line length).
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Signed integers */
|
|
||||||
typedef int8_t s8;
|
|
||||||
typedef int16_t s16;
|
|
||||||
typedef int32_t s32;
|
|
||||||
|
|
||||||
/* Unsigned integers */
|
|
||||||
typedef uint8_t u8;
|
|
||||||
typedef uint16_t u16;
|
|
||||||
typedef uint32_t u32;
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -21,16 +21,16 @@
|
||||||
#ifndef __USB_H
|
#ifndef __USB_H
|
||||||
#define __USB_H
|
#define __USB_H
|
||||||
|
|
||||||
#include "shorttypes.h"
|
|
||||||
#include "reg_ezusb.h"
|
#include "reg_ezusb.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#define NULL (void*)0;
|
#define NULL (void*)0;
|
||||||
|
|
||||||
/* High and Low byte of a word (u16) */
|
/* High and Low byte of a word (uint16_t) */
|
||||||
#define HI8(word) (u8)(((u16)word >> 8) & 0xff)
|
#define HI8(word) (uint8_t)(((uint16_t)word >> 8) & 0xff)
|
||||||
#define LO8(word) (u8)((u16)word & 0xff)
|
#define LO8(word) (uint8_t)((uint16_t)word & 0xff)
|
||||||
|
|
||||||
/* Convenience functions */
|
/* Convenience functions */
|
||||||
#define STALL_EP0() EP0CS |= EP0STALL
|
#define STALL_EP0() EP0CS |= EP0STALL
|
||||||
|
@ -49,80 +49,80 @@
|
||||||
|
|
||||||
/** USB Device Descriptor. See USB 1.1 spec, pp. 196 - 198 */
|
/** USB Device Descriptor. See USB 1.1 spec, pp. 196 - 198 */
|
||||||
struct usb_device_descriptor {
|
struct usb_device_descriptor {
|
||||||
u8 bLength; ///< Size of this descriptor in bytes.
|
uint8_t bLength; ///< Size of this descriptor in bytes.
|
||||||
u8 bDescriptorType; ///< DEVICE Descriptor Type.
|
uint8_t bDescriptorType; ///< DEVICE Descriptor Type.
|
||||||
u16 bcdUSB; ///< USB specification release number (BCD).
|
uint16_t bcdUSB; ///< USB specification release number (BCD).
|
||||||
u8 bDeviceClass; ///< Class code.
|
uint8_t bDeviceClass; ///< Class code.
|
||||||
u8 bDeviceSubClass; ///< Subclass code.
|
uint8_t bDeviceSubClass; ///< Subclass code.
|
||||||
u8 bDeviceProtocol; ///< Protocol code.
|
uint8_t bDeviceProtocol; ///< Protocol code.
|
||||||
u8 bMaxPacketSize0; ///< Maximum packet size for EP0 (8, 16, 32, 64).
|
uint8_t bMaxPacketSize0; ///< Maximum packet size for EP0 (8, 16, 32, 64).
|
||||||
u16 idVendor; ///< USB Vendor ID.
|
uint16_t idVendor; ///< USB Vendor ID.
|
||||||
u16 idProduct; ///< USB Product ID.
|
uint16_t idProduct; ///< USB Product ID.
|
||||||
u16 bcdDevice; ///< Device Release Number (BCD).
|
uint16_t bcdDevice; ///< Device Release Number (BCD).
|
||||||
u8 iManufacturer; ///< Index of manufacturer string descriptor.
|
uint8_t iManufacturer; ///< Index of manufacturer string descriptor.
|
||||||
u8 iProduct; ///< Index of product string descriptor.
|
uint8_t iProduct; ///< Index of product string descriptor.
|
||||||
u8 iSerialNumber; ///< Index of string descriptor containing serial #.
|
uint8_t iSerialNumber; ///< Index of string descriptor containing serial #.
|
||||||
u8 bNumConfigurations; ///< Number of possible configurations.
|
uint8_t bNumConfigurations; ///< Number of possible configurations.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** USB Configuration Descriptor. See USB 1.1 spec, pp. 199 - 200 */
|
/** USB Configuration Descriptor. See USB 1.1 spec, pp. 199 - 200 */
|
||||||
struct usb_config_descriptor {
|
struct usb_config_descriptor {
|
||||||
u8 bLength; ///< Size of this descriptor in bytes.
|
uint8_t bLength; ///< Size of this descriptor in bytes.
|
||||||
u8 bDescriptorType; ///< CONFIGURATION descriptor type.
|
uint8_t bDescriptorType; ///< CONFIGURATION descriptor type.
|
||||||
u16 wTotalLength; ///< Combined total length of all descriptors.
|
uint16_t wTotalLength; ///< Combined total length of all descriptors.
|
||||||
u8 bNumInterfaces; ///< Number of interfaces in this configuration.
|
uint8_t bNumInterfaces; ///< Number of interfaces in this configuration.
|
||||||
u8 bConfigurationValue; ///< Value used to select this configuration.
|
uint8_t bConfigurationValue;///< Value used to select this configuration.
|
||||||
u8 iConfiguration; ///< Index of configuration string descriptor.
|
uint8_t iConfiguration; ///< Index of configuration string descriptor.
|
||||||
u8 bmAttributes; ///< Configuration characteristics.
|
uint8_t bmAttributes; ///< Configuration characteristics.
|
||||||
u8 MaxPower; ///< Maximum power consumption in 2 mA units.
|
uint8_t MaxPower; ///< Maximum power consumption in 2 mA units.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** USB Interface Descriptor. See USB 1.1 spec, pp. 201 - 203 */
|
/** USB Interface Descriptor. See USB 1.1 spec, pp. 201 - 203 */
|
||||||
struct usb_interface_descriptor {
|
struct usb_interface_descriptor {
|
||||||
u8 bLength; ///< Size of this descriptor in bytes.
|
uint8_t bLength; ///< Size of this descriptor in bytes.
|
||||||
u8 bDescriptorType; ///< INTERFACE descriptor type.
|
uint8_t bDescriptorType; ///< INTERFACE descriptor type.
|
||||||
u8 bInterfaceNumber; ///< Interface number.
|
uint8_t bInterfaceNumber; ///< Interface number.
|
||||||
u8 bAlternateSetting; ///< Value used to select alternate setting.
|
uint8_t bAlternateSetting; ///< Value used to select alternate setting.
|
||||||
u8 bNumEndpoints; ///< Number of endpoints used by this interface.
|
uint8_t bNumEndpoints; ///< Number of endpoints used by this interface.
|
||||||
u8 bInterfaceClass; ///< Class code.
|
uint8_t bInterfaceClass; ///< Class code.
|
||||||
u8 bInterfaceSubclass; ///< Subclass code.
|
uint8_t bInterfaceSubclass; ///< Subclass code.
|
||||||
u8 bInterfaceProtocol; ///< Protocol code.
|
uint8_t bInterfaceProtocol; ///< Protocol code.
|
||||||
u8 iInterface; ///< Index of interface string descriptor.
|
uint8_t iInterface; ///< Index of interface string descriptor.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** USB Endpoint Descriptor. See USB 1.1 spec, pp. 203 - 204 */
|
/** USB Endpoint Descriptor. See USB 1.1 spec, pp. 203 - 204 */
|
||||||
struct usb_endpoint_descriptor {
|
struct usb_endpoint_descriptor {
|
||||||
u8 bLength; ///< Size of this descriptor in bytes.
|
uint8_t bLength; ///< Size of this descriptor in bytes.
|
||||||
u8 bDescriptorType; ///< ENDPOINT descriptor type.
|
uint8_t bDescriptorType; ///< ENDPOINT descriptor type.
|
||||||
u8 bEndpointAddress; ///< Endpoint Address: USB 1.1 spec, table 9-10.
|
uint8_t bEndpointAddress; ///< Endpoint Address: USB 1.1 spec, table 9-10.
|
||||||
u8 bmAttributes; ///< Endpoint Attributes: USB 1.1 spec, table 9-10.
|
uint8_t bmAttributes; ///< Endpoint Attributes: USB 1.1 spec, table 9-10.
|
||||||
u16 wMaxPacketSize; ///< Maximum packet size for this endpoint.
|
uint16_t wMaxPacketSize; ///< Maximum packet size for this endpoint.
|
||||||
u8 bInterval; ///< Polling interval (in ms) for this endpoint.
|
uint8_t bInterval; ///< Polling interval (in ms) for this endpoint.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** USB Language Descriptor. See USB 1.1 spec, pp. 204 - 205 */
|
/** USB Language Descriptor. See USB 1.1 spec, pp. 204 - 205 */
|
||||||
struct usb_language_descriptor {
|
struct usb_language_descriptor {
|
||||||
u8 bLength; ///< Size of this descriptor in bytes.
|
uint8_t bLength; ///< Size of this descriptor in bytes.
|
||||||
u8 bDescriptorType; ///< STRING descriptor type.
|
uint8_t bDescriptorType; ///< STRING descriptor type.
|
||||||
u16 wLANGID[]; ///< LANGID codes.
|
uint16_t wLANGID[]; ///< LANGID codes.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** USB String Descriptor. See USB 1.1 spec, pp. 204 - 205 */
|
/** USB String Descriptor. See USB 1.1 spec, pp. 204 - 205 */
|
||||||
struct usb_string_descriptor {
|
struct usb_string_descriptor {
|
||||||
u8 bLength; ///< Size of this descriptor in bytes.
|
uint8_t bLength; ///< Size of this descriptor in bytes.
|
||||||
u8 bDescriptorType; ///< STRING descriptor type.
|
uint8_t bDescriptorType; ///< STRING descriptor type.
|
||||||
u16 bString[]; ///< UNICODE encoded string.
|
uint16_t bString[]; ///< UNICODE encoded string.
|
||||||
};
|
};
|
||||||
|
|
||||||
/********************** USB Control Endpoint 0 related *********************/
|
/********************** USB Control Endpoint 0 related *********************/
|
||||||
|
|
||||||
/** USB Control Setup Data. See USB 1.1 spec, pp. 183 - 185 */
|
/** USB Control Setup Data. See USB 1.1 spec, pp. 183 - 185 */
|
||||||
struct setup_data {
|
struct setup_data {
|
||||||
u8 bmRequestType; ///< Characteristics of a request.
|
uint8_t bmRequestType; ///< Characteristics of a request.
|
||||||
u8 bRequest; ///< Specific request.
|
uint8_t bRequest; ///< Specific request.
|
||||||
u16 wValue; ///< Field that varies according to request.
|
uint16_t wValue; ///< Field that varies according to request.
|
||||||
u16 wIndex; ///< Field that varies according to request.
|
uint16_t wIndex; ///< Field that varies according to request.
|
||||||
u16 wLength; ///< Number of bytes to transfer in data stage.
|
uint16_t wLength; ///< Number of bytes to transfer in data stage.
|
||||||
};
|
};
|
||||||
|
|
||||||
/* External declarations for variables that need to be accessed outside of
|
/* External declarations for variables that need to be accessed outside of
|
||||||
|
@ -252,8 +252,8 @@ enum usb_isr {
|
||||||
|
|
||||||
/*************************** Function Prototypes ***************************/
|
/*************************** Function Prototypes ***************************/
|
||||||
|
|
||||||
__xdata u8* usb_get_endpoint_cs_reg(u8 ep);
|
__xdata uint8_t* usb_get_endpoint_cs_reg(uint8_t ep);
|
||||||
void usb_reset_data_toggle(u8 ep);
|
void usb_reset_data_toggle(uint8_t ep);
|
||||||
|
|
||||||
bool usb_handle_get_status(void);
|
bool usb_handle_get_status(void);
|
||||||
bool usb_handle_clear_feature(void);
|
bool usb_handle_clear_feature(void);
|
||||||
|
|
|
@ -26,24 +26,24 @@ void delay_5us(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void delay_1ms(void) {
|
void delay_1ms(void) {
|
||||||
u16 i;
|
uint16_t i;
|
||||||
|
|
||||||
for (i = 0; i < 598; i++);
|
for (i = 0; i < 598; i++);
|
||||||
}
|
}
|
||||||
|
|
||||||
void delay_us(u16 delay)
|
void delay_us(uint16_t delay)
|
||||||
{
|
{
|
||||||
u16 i;
|
uint16_t i;
|
||||||
u16 maxcount = (delay / 5);
|
uint16_t maxcount = (delay / 5);
|
||||||
|
|
||||||
for (i = 0; i < maxcount; i++) {
|
for (i = 0; i < maxcount; i++) {
|
||||||
delay_5us();
|
delay_5us();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void delay_ms(u16 delay)
|
void delay_ms(uint16_t delay)
|
||||||
{
|
{
|
||||||
u16 i;
|
uint16_t i;
|
||||||
|
|
||||||
for (i = 0; i < delay; i++) {
|
for (i = 0; i < delay; i++) {
|
||||||
delay_1ms();
|
delay_1ms();
|
||||||
|
|
|
@ -27,19 +27,19 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
/** Delay value for SCAN_IN operations with less than maximum TCK frequency */
|
/** Delay value for SCAN_IN operations with less than maximum TCK frequency */
|
||||||
u8 delay_scan_in = 0;
|
uint8_t delay_scan_in = 0;
|
||||||
|
|
||||||
/** Delay value for SCAN_OUT operations with less than maximum TCK frequency */
|
/** Delay value for SCAN_OUT operations with less than maximum TCK frequency */
|
||||||
u8 delay_scan_out = 0;
|
uint8_t delay_scan_out = 0;
|
||||||
|
|
||||||
/** Delay value for SCAN_IO operations with less than maximum TCK frequency */
|
/** Delay value for SCAN_IO operations with less than maximum TCK frequency */
|
||||||
u8 delay_scan_io = 0;
|
uint8_t delay_scan_io = 0;
|
||||||
|
|
||||||
/** Delay value for CLOCK_TCK operations with less than maximum frequency */
|
/** Delay value for CLOCK_TCK operations with less than maximum frequency */
|
||||||
u8 delay_tck = 0;
|
uint8_t delay_tck = 0;
|
||||||
|
|
||||||
/** Delay value for CLOCK_TMS operations with less than maximum frequency */
|
/** Delay value for CLOCK_TMS operations with less than maximum frequency */
|
||||||
u8 delay_tms = 0;
|
uint8_t delay_tms = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform JTAG SCAN-IN operation at maximum TCK frequency.
|
* Perform JTAG SCAN-IN operation at maximum TCK frequency.
|
||||||
|
@ -51,14 +51,14 @@ u8 delay_tms = 0;
|
||||||
*
|
*
|
||||||
* @param out_offset offset in OUT2BUF where payload data starts
|
* @param out_offset offset in OUT2BUF where payload data starts
|
||||||
*/
|
*/
|
||||||
void jtag_scan_in(u8 out_offset, u8 in_offset)
|
void jtag_scan_in(uint8_t out_offset, uint8_t in_offset)
|
||||||
{
|
{
|
||||||
u8 scan_size_bytes, bits_last_byte;
|
uint8_t scan_size_bytes, bits_last_byte;
|
||||||
u8 tms_count_start, tms_count_end;
|
uint8_t tms_count_start, tms_count_end;
|
||||||
u8 tms_sequence_start, tms_sequence_end;
|
uint8_t tms_sequence_start, tms_sequence_end;
|
||||||
u8 tdo_data, i, j;
|
uint8_t tdo_data, i, j;
|
||||||
|
|
||||||
u8 outb_buffer;
|
uint8_t outb_buffer;
|
||||||
|
|
||||||
/* Get parameters from OUT2BUF */
|
/* Get parameters from OUT2BUF */
|
||||||
scan_size_bytes = OUT2BUF[out_offset];
|
scan_size_bytes = OUT2BUF[out_offset];
|
||||||
|
@ -132,14 +132,14 @@ void jtag_scan_in(u8 out_offset, u8 in_offset)
|
||||||
*
|
*
|
||||||
* @param out_offset offset in OUT2BUF where payload data starts
|
* @param out_offset offset in OUT2BUF where payload data starts
|
||||||
*/
|
*/
|
||||||
void jtag_slow_scan_in(u8 out_offset, u8 in_offset)
|
void jtag_slow_scan_in(uint8_t out_offset, uint8_t in_offset)
|
||||||
{
|
{
|
||||||
u8 scan_size_bytes, bits_last_byte;
|
uint8_t scan_size_bytes, bits_last_byte;
|
||||||
u8 tms_count_start, tms_count_end;
|
uint8_t tms_count_start, tms_count_end;
|
||||||
u8 tms_sequence_start, tms_sequence_end;
|
uint8_t tms_sequence_start, tms_sequence_end;
|
||||||
u8 tdo_data, i, j, k;
|
uint8_t tdo_data, i, j, k;
|
||||||
|
|
||||||
u8 outb_buffer;
|
uint8_t outb_buffer;
|
||||||
|
|
||||||
/* Get parameters from OUT2BUF */
|
/* Get parameters from OUT2BUF */
|
||||||
scan_size_bytes = OUT2BUF[out_offset];
|
scan_size_bytes = OUT2BUF[out_offset];
|
||||||
|
@ -220,14 +220,14 @@ void jtag_slow_scan_in(u8 out_offset, u8 in_offset)
|
||||||
*
|
*
|
||||||
* @param out_offset offset in OUT2BUF where payload data starts
|
* @param out_offset offset in OUT2BUF where payload data starts
|
||||||
*/
|
*/
|
||||||
void jtag_scan_out(u8 out_offset)
|
void jtag_scan_out(uint8_t out_offset)
|
||||||
{
|
{
|
||||||
u8 scan_size_bytes, bits_last_byte;
|
uint8_t scan_size_bytes, bits_last_byte;
|
||||||
u8 tms_count_start, tms_count_end;
|
uint8_t tms_count_start, tms_count_end;
|
||||||
u8 tms_sequence_start, tms_sequence_end;
|
uint8_t tms_sequence_start, tms_sequence_end;
|
||||||
u8 tdi_data, i, j;
|
uint8_t tdi_data, i, j;
|
||||||
|
|
||||||
u8 outb_buffer;
|
uint8_t outb_buffer;
|
||||||
|
|
||||||
/* Get parameters from OUT2BUF */
|
/* Get parameters from OUT2BUF */
|
||||||
scan_size_bytes = OUT2BUF[out_offset];
|
scan_size_bytes = OUT2BUF[out_offset];
|
||||||
|
@ -301,14 +301,14 @@ void jtag_scan_out(u8 out_offset)
|
||||||
*
|
*
|
||||||
* @param out_offset offset in OUT2BUF where payload data starts
|
* @param out_offset offset in OUT2BUF where payload data starts
|
||||||
*/
|
*/
|
||||||
void jtag_slow_scan_out(u8 out_offset)
|
void jtag_slow_scan_out(uint8_t out_offset)
|
||||||
{
|
{
|
||||||
u8 scan_size_bytes, bits_last_byte;
|
uint8_t scan_size_bytes, bits_last_byte;
|
||||||
u8 tms_count_start, tms_count_end;
|
uint8_t tms_count_start, tms_count_end;
|
||||||
u8 tms_sequence_start, tms_sequence_end;
|
uint8_t tms_sequence_start, tms_sequence_end;
|
||||||
u8 tdi_data, i, j, k;
|
uint8_t tdi_data, i, j, k;
|
||||||
|
|
||||||
u8 outb_buffer;
|
uint8_t outb_buffer;
|
||||||
|
|
||||||
/* Get parameters from OUT2BUF */
|
/* Get parameters from OUT2BUF */
|
||||||
scan_size_bytes = OUT2BUF[out_offset];
|
scan_size_bytes = OUT2BUF[out_offset];
|
||||||
|
@ -388,14 +388,14 @@ void jtag_slow_scan_out(u8 out_offset)
|
||||||
*
|
*
|
||||||
* @param out_offset offset in OUT2BUF where payload data starts
|
* @param out_offset offset in OUT2BUF where payload data starts
|
||||||
*/
|
*/
|
||||||
void jtag_scan_io(u8 out_offset, u8 in_offset)
|
void jtag_scan_io(uint8_t out_offset, uint8_t in_offset)
|
||||||
{
|
{
|
||||||
u8 scan_size_bytes, bits_last_byte;
|
uint8_t scan_size_bytes, bits_last_byte;
|
||||||
u8 tms_count_start, tms_count_end;
|
uint8_t tms_count_start, tms_count_end;
|
||||||
u8 tms_sequence_start, tms_sequence_end;
|
uint8_t tms_sequence_start, tms_sequence_end;
|
||||||
u8 tdi_data, tdo_data, i, j;
|
uint8_t tdi_data, tdo_data, i, j;
|
||||||
|
|
||||||
u8 outb_buffer;
|
uint8_t outb_buffer;
|
||||||
|
|
||||||
/* Get parameters from OUT2BUF */
|
/* Get parameters from OUT2BUF */
|
||||||
scan_size_bytes = OUT2BUF[out_offset];
|
scan_size_bytes = OUT2BUF[out_offset];
|
||||||
|
@ -488,14 +488,14 @@ void jtag_scan_io(u8 out_offset, u8 in_offset)
|
||||||
*
|
*
|
||||||
* @param out_offset offset in OUT2BUF where payload data starts
|
* @param out_offset offset in OUT2BUF where payload data starts
|
||||||
*/
|
*/
|
||||||
void jtag_slow_scan_io(u8 out_offset, u8 in_offset)
|
void jtag_slow_scan_io(uint8_t out_offset, uint8_t in_offset)
|
||||||
{
|
{
|
||||||
u8 scan_size_bytes, bits_last_byte;
|
uint8_t scan_size_bytes, bits_last_byte;
|
||||||
u8 tms_count_start, tms_count_end;
|
uint8_t tms_count_start, tms_count_end;
|
||||||
u8 tms_sequence_start, tms_sequence_end;
|
uint8_t tms_sequence_start, tms_sequence_end;
|
||||||
u8 tdi_data, tdo_data, i, j, k;
|
uint8_t tdi_data, tdo_data, i, j, k;
|
||||||
|
|
||||||
u8 outb_buffer;
|
uint8_t outb_buffer;
|
||||||
|
|
||||||
/* Get parameters from OUT2BUF */
|
/* Get parameters from OUT2BUF */
|
||||||
scan_size_bytes = OUT2BUF[out_offset];
|
scan_size_bytes = OUT2BUF[out_offset];
|
||||||
|
@ -590,10 +590,10 @@ void jtag_slow_scan_io(u8 out_offset, u8 in_offset)
|
||||||
*
|
*
|
||||||
* @param count number of TCK clock cyclces to generate.
|
* @param count number of TCK clock cyclces to generate.
|
||||||
*/
|
*/
|
||||||
void jtag_clock_tck(u16 count)
|
void jtag_clock_tck(uint16_t count)
|
||||||
{
|
{
|
||||||
u16 i;
|
uint16_t i;
|
||||||
u8 outb_buffer = OUTB & ~(PIN_TCK);
|
uint8_t outb_buffer = OUTB & ~(PIN_TCK);
|
||||||
|
|
||||||
for ( i = 0; i < count; i++ ) {
|
for ( i = 0; i < count; i++ ) {
|
||||||
OUTB = outb_buffer;
|
OUTB = outb_buffer;
|
||||||
|
@ -608,11 +608,11 @@ void jtag_clock_tck(u16 count)
|
||||||
*
|
*
|
||||||
* @param count number of TCK clock cyclces to generate.
|
* @param count number of TCK clock cyclces to generate.
|
||||||
*/
|
*/
|
||||||
void jtag_slow_clock_tck(u16 count)
|
void jtag_slow_clock_tck(uint16_t count)
|
||||||
{
|
{
|
||||||
u16 i;
|
uint16_t i;
|
||||||
u8 j;
|
uint8_t j;
|
||||||
u8 outb_buffer = OUTB & ~(PIN_TCK);
|
uint8_t outb_buffer = OUTB & ~(PIN_TCK);
|
||||||
|
|
||||||
for ( i = 0; i < count; i++ ) {
|
for ( i = 0; i < count; i++ ) {
|
||||||
OUTB = outb_buffer;
|
OUTB = outb_buffer;
|
||||||
|
@ -631,10 +631,10 @@ void jtag_slow_clock_tck(u16 count)
|
||||||
* @param sequence the TMS pin levels for each state transition, starting with
|
* @param sequence the TMS pin levels for each state transition, starting with
|
||||||
* the least-significant bit.
|
* the least-significant bit.
|
||||||
*/
|
*/
|
||||||
void jtag_clock_tms(u8 count, u8 sequence)
|
void jtag_clock_tms(uint8_t count, uint8_t sequence)
|
||||||
{
|
{
|
||||||
u8 outb_buffer = OUTB & ~(PIN_TCK);
|
uint8_t outb_buffer = OUTB & ~(PIN_TCK);
|
||||||
u8 i;
|
uint8_t i;
|
||||||
|
|
||||||
for ( i = 0; i < count; i++ ) {
|
for ( i = 0; i < count; i++ ) {
|
||||||
/* Set TMS pin according to sequence parameter */
|
/* Set TMS pin according to sequence parameter */
|
||||||
|
@ -660,10 +660,10 @@ void jtag_clock_tms(u8 count, u8 sequence)
|
||||||
* @param sequence the TMS pin levels for each state transition, starting with
|
* @param sequence the TMS pin levels for each state transition, starting with
|
||||||
* the least-significant bit.
|
* the least-significant bit.
|
||||||
*/
|
*/
|
||||||
void jtag_slow_clock_tms(u8 count, u8 sequence)
|
void jtag_slow_clock_tms(uint8_t count, uint8_t sequence)
|
||||||
{
|
{
|
||||||
u8 outb_buffer = OUTB & ~(PIN_TCK);
|
uint8_t outb_buffer = OUTB & ~(PIN_TCK);
|
||||||
u8 i, j;
|
uint8_t i, j;
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
/* Set TMS pin according to sequence parameter */
|
/* Set TMS pin according to sequence parameter */
|
||||||
|
@ -689,9 +689,9 @@ void jtag_slow_clock_tms(u8 count, u8 sequence)
|
||||||
* of the JTAG input signals and the least-significant byte cotains the state
|
* of the JTAG input signals and the least-significant byte cotains the state
|
||||||
* of the JTAG output signals.
|
* of the JTAG output signals.
|
||||||
*/
|
*/
|
||||||
u16 jtag_get_signals(void)
|
uint16_t jtag_get_signals(void)
|
||||||
{
|
{
|
||||||
u8 input_signal_state, output_signal_state;
|
uint8_t input_signal_state, output_signal_state;
|
||||||
|
|
||||||
input_signal_state = 0;
|
input_signal_state = 0;
|
||||||
output_signal_state = 0;
|
output_signal_state = 0;
|
||||||
|
@ -715,7 +715,7 @@ u16 jtag_get_signals(void)
|
||||||
/* Get states of output pins */
|
/* Get states of output pins */
|
||||||
output_signal_state = PINSB & MASK_PORTB_DIRECTION_OUT;
|
output_signal_state = PINSB & MASK_PORTB_DIRECTION_OUT;
|
||||||
|
|
||||||
return ((u16)input_signal_state << 8) | ((u16)output_signal_state);
|
return ((uint16_t)input_signal_state << 8) | ((uint16_t)output_signal_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -724,7 +724,7 @@ u16 jtag_get_signals(void)
|
||||||
* @param low signals which should be de-asserted.
|
* @param low signals which should be de-asserted.
|
||||||
* @param high signals which should be asserted.
|
* @param high signals which should be asserted.
|
||||||
*/
|
*/
|
||||||
void jtag_set_signals(u8 low, u8 high)
|
void jtag_set_signals(uint8_t low, uint8_t high)
|
||||||
{
|
{
|
||||||
OUTB &= ~(low & MASK_PORTB_DIRECTION_OUT);
|
OUTB &= ~(low & MASK_PORTB_DIRECTION_OUT);
|
||||||
OUTB |= (high & MASK_PORTB_DIRECTION_OUT);
|
OUTB |= (high & MASK_PORTB_DIRECTION_OUT);
|
||||||
|
@ -739,8 +739,8 @@ void jtag_set_signals(u8 low, u8 high)
|
||||||
* @param tck number of delay cycles in clock_tck operations.
|
* @param tck number of delay cycles in clock_tck operations.
|
||||||
* @param tms number of delay cycles in clock_tms operations.
|
* @param tms number of delay cycles in clock_tms operations.
|
||||||
*/
|
*/
|
||||||
void jtag_configure_tck_delay(u8 scan_in, u8 scan_out, u8 scan_io, u8 tck,
|
void jtag_configure_tck_delay(uint8_t scan_in, uint8_t scan_out,
|
||||||
u8 tms)
|
uint8_t scan_io, uint8_t tck, uint8_t tms)
|
||||||
{
|
{
|
||||||
delay_scan_in = scan_in;
|
delay_scan_in = scan_in;
|
||||||
delay_scan_out = scan_out;
|
delay_scan_out = scan_out;
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
#include "shorttypes.h"
|
|
||||||
#include "io.h"
|
#include "io.h"
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
|
|
|
@ -47,17 +47,17 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** Index in EP2 Bulk-OUT data buffer that contains the current command ID */
|
/** Index in EP2 Bulk-OUT data buffer that contains the current command ID */
|
||||||
volatile u8 cmd_id_index;
|
volatile uint8_t cmd_id_index;
|
||||||
|
|
||||||
/** Number of data bytes already in EP2 Bulk-IN buffer */
|
/** Number of data bytes already in EP2 Bulk-IN buffer */
|
||||||
volatile u8 payload_index_in;
|
volatile uint8_t payload_index_in;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute a SET_LEDS command.
|
* Execute a SET_LEDS command.
|
||||||
*/
|
*/
|
||||||
void execute_set_led_command(void)
|
void execute_set_led_command(void)
|
||||||
{
|
{
|
||||||
u8 led_state = OUT2BUF[cmd_id_index + 1];
|
uint8_t led_state = OUT2BUF[cmd_id_index + 1];
|
||||||
|
|
||||||
if (led_state & RUN_LED_ON) {
|
if (led_state & RUN_LED_ON) {
|
||||||
SET_RUN_LED();
|
SET_RUN_LED();
|
||||||
|
@ -87,9 +87,9 @@ void execute_set_led_command(void)
|
||||||
*/
|
*/
|
||||||
bool execute_command(void)
|
bool execute_command(void)
|
||||||
{
|
{
|
||||||
u8 usb_out_bytecount, usb_in_bytecount;
|
uint8_t usb_out_bytecount, usb_in_bytecount;
|
||||||
u16 signal_state;
|
uint16_t signal_state;
|
||||||
u16 count;
|
uint16_t count;
|
||||||
|
|
||||||
/* Most commands do not transfer IN data. To save code space, we write 0 to
|
/* Most commands do not transfer IN data. To save code space, we write 0 to
|
||||||
* usb_in_bytecount here, then modify it in the switch statement below where
|
* usb_in_bytecount here, then modify it in the switch statement below where
|
||||||
|
@ -117,8 +117,8 @@ bool execute_command(void)
|
||||||
break;
|
break;
|
||||||
case CMD_CLOCK_TCK:
|
case CMD_CLOCK_TCK:
|
||||||
usb_out_bytecount = 2;
|
usb_out_bytecount = 2;
|
||||||
count = (u16)OUT2BUF[cmd_id_index + 1];
|
count = (uint16_t)OUT2BUF[cmd_id_index + 1];
|
||||||
count |= ((u16)OUT2BUF[cmd_id_index + 2]) << 8;
|
count |= ((uint16_t)OUT2BUF[cmd_id_index + 2]) << 8;
|
||||||
jtag_clock_tck(count);
|
jtag_clock_tck(count);
|
||||||
break;
|
break;
|
||||||
case CMD_SLOW_SCAN_IN:
|
case CMD_SLOW_SCAN_IN:
|
||||||
|
@ -141,20 +141,20 @@ bool execute_command(void)
|
||||||
break;
|
break;
|
||||||
case CMD_SLOW_CLOCK_TCK:
|
case CMD_SLOW_CLOCK_TCK:
|
||||||
usb_out_bytecount = 2;
|
usb_out_bytecount = 2;
|
||||||
count = (u16)OUT2BUF[cmd_id_index + 1];
|
count = (uint16_t)OUT2BUF[cmd_id_index + 1];
|
||||||
count |= ((u16)OUT2BUF[cmd_id_index + 2]) << 8;
|
count |= ((uint16_t)OUT2BUF[cmd_id_index + 2]) << 8;
|
||||||
jtag_slow_clock_tck(count);
|
jtag_slow_clock_tck(count);
|
||||||
break;
|
break;
|
||||||
case CMD_SLEEP_US:
|
case CMD_SLEEP_US:
|
||||||
usb_out_bytecount = 2;
|
usb_out_bytecount = 2;
|
||||||
count = (u16)OUT2BUF[cmd_id_index + 1];
|
count = (uint16_t)OUT2BUF[cmd_id_index + 1];
|
||||||
count |= ((u16)OUT2BUF[cmd_id_index + 2]) << 8;
|
count |= ((uint16_t)OUT2BUF[cmd_id_index + 2]) << 8;
|
||||||
delay_us(count);
|
delay_us(count);
|
||||||
break;
|
break;
|
||||||
case CMD_SLEEP_MS:
|
case CMD_SLEEP_MS:
|
||||||
usb_out_bytecount = 2;
|
usb_out_bytecount = 2;
|
||||||
count = (u16)OUT2BUF[cmd_id_index + 1];
|
count = (uint16_t)OUT2BUF[cmd_id_index + 1];
|
||||||
count |= ((u16)OUT2BUF[cmd_id_index + 2]) << 8;
|
count |= ((uint16_t)OUT2BUF[cmd_id_index + 2]) << 8;
|
||||||
delay_ms(count);
|
delay_ms(count);
|
||||||
break;
|
break;
|
||||||
case CMD_GET_SIGNALS:
|
case CMD_GET_SIGNALS:
|
||||||
|
|
|
@ -205,10 +205,10 @@ void ep7out_isr(void) __interrupt EP7OUT_ISR { }
|
||||||
* specified in \a ep
|
* specified in \a ep
|
||||||
* @return on failure: NULL
|
* @return on failure: NULL
|
||||||
*/
|
*/
|
||||||
__xdata u8* usb_get_endpoint_cs_reg(u8 ep)
|
__xdata uint8_t* usb_get_endpoint_cs_reg(uint8_t ep)
|
||||||
{
|
{
|
||||||
/* Mask direction bit */
|
/* Mask direction bit */
|
||||||
u8 ep_num = ep & 0x7F;
|
uint8_t ep_num = ep & 0x7F;
|
||||||
|
|
||||||
switch (ep_num) {
|
switch (ep_num) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -240,7 +240,7 @@ __xdata u8* usb_get_endpoint_cs_reg(u8 ep)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void usb_reset_data_toggle(u8 ep)
|
void usb_reset_data_toggle(uint8_t ep)
|
||||||
{
|
{
|
||||||
/* TOGCTL register:
|
/* TOGCTL register:
|
||||||
+----+-----+-----+------+-----+-------+-------+-------+
|
+----+-----+-----+------+-----+-------+-------+-------+
|
||||||
|
@ -251,7 +251,7 @@ void usb_reset_data_toggle(u8 ep)
|
||||||
to the IO bit and the endpoint number to the EP2..EP0 bits. Then, in a
|
to the IO bit and the endpoint number to the EP2..EP0 bits. Then, in a
|
||||||
separate write cycle, the R bit needs to be set.
|
separate write cycle, the R bit needs to be set.
|
||||||
*/
|
*/
|
||||||
u8 togctl_value = (ep & 0x80 >> 3) | (ep & 0x7);
|
uint8_t togctl_value = (ep & 0x80 >> 3) | (ep & 0x7);
|
||||||
|
|
||||||
/* First step: Write EP number and direction bit */
|
/* First step: Write EP number and direction bit */
|
||||||
TOGCTL = togctl_value;
|
TOGCTL = togctl_value;
|
||||||
|
@ -269,7 +269,7 @@ void usb_reset_data_toggle(u8 ep)
|
||||||
*/
|
*/
|
||||||
bool usb_handle_get_status(void)
|
bool usb_handle_get_status(void)
|
||||||
{
|
{
|
||||||
u8 *ep_cs;
|
uint8_t *ep_cs;
|
||||||
|
|
||||||
switch (setup_data.bmRequestType) {
|
switch (setup_data.bmRequestType) {
|
||||||
case GS_DEVICE:
|
case GS_DEVICE:
|
||||||
|
@ -322,7 +322,7 @@ bool usb_handle_get_status(void)
|
||||||
*/
|
*/
|
||||||
bool usb_handle_clear_feature(void)
|
bool usb_handle_clear_feature(void)
|
||||||
{
|
{
|
||||||
__xdata u8 *ep_cs;
|
__xdata uint8_t *ep_cs;
|
||||||
|
|
||||||
switch (setup_data.bmRequestType) {
|
switch (setup_data.bmRequestType) {
|
||||||
case CF_DEVICE:
|
case CF_DEVICE:
|
||||||
|
@ -358,7 +358,7 @@ bool usb_handle_clear_feature(void)
|
||||||
*/
|
*/
|
||||||
bool usb_handle_set_feature(void)
|
bool usb_handle_set_feature(void)
|
||||||
{
|
{
|
||||||
__xdata u8 *ep_cs;
|
__xdata uint8_t *ep_cs;
|
||||||
|
|
||||||
switch (setup_data.bmRequestType) {
|
switch (setup_data.bmRequestType) {
|
||||||
case SF_DEVICE:
|
case SF_DEVICE:
|
||||||
|
@ -396,8 +396,8 @@ bool usb_handle_set_feature(void)
|
||||||
*/
|
*/
|
||||||
bool usb_handle_get_descriptor(void)
|
bool usb_handle_get_descriptor(void)
|
||||||
{
|
{
|
||||||
__xdata u8 descriptor_type;
|
__xdata uint8_t descriptor_type;
|
||||||
__xdata u8 descriptor_index;
|
__xdata uint8_t descriptor_index;
|
||||||
|
|
||||||
descriptor_type = (setup_data.wValue & 0xff00) >> 8;
|
descriptor_type = (setup_data.wValue & 0xff00) >> 8;
|
||||||
descriptor_index = setup_data.wValue & 0x00ff;
|
descriptor_index = setup_data.wValue & 0x00ff;
|
||||||
|
|
Loading…
Reference in New Issue