Fix usb drivers.

This commit is contained in:
NIIBE Yutaka
2017-06-26 19:50:55 +09:00
parent 526b8fec2a
commit 1f7d4a6aac
5 changed files with 48 additions and 80 deletions

View File

@@ -272,43 +272,7 @@ kl27z_ep_clear_dtog (int rx, uint8_t n)
kl27z_ep_clear_stall (n);
}
#define USB_MAX_PACKET_SIZE 64 /* For FS device */
enum STANDARD_REQUESTS {
GET_STATUS = 0,
CLEAR_FEATURE,
RESERVED1,
SET_FEATURE,
RESERVED2,
SET_ADDRESS,
GET_DESCRIPTOR,
SET_DESCRIPTOR,
GET_CONFIGURATION,
SET_CONFIGURATION,
GET_INTERFACE,
SET_INTERFACE,
SYNCH_FRAME,
TOTAL_REQUEST /* Total number of Standard request */
};
enum FEATURE_SELECTOR {
FEATURE_ENDPOINT_HALT=0,
FEATURE_DEVICE_REMOTE_WAKEUP=1
};
/* The state machine states of a control pipe */
enum {
WAIT_SETUP,
IN_DATA,
OUT_DATA,
LAST_IN_DATA,
WAIT_STATUS_IN,
WAIT_STATUS_OUT,
STALLED,
PAUSE
};
#include "usb_lld_driver.h"
static int handle_transaction (struct usb_dev *dev, uint8_t stat);

View File

@@ -31,44 +31,7 @@
#include "sys-stm32f103.h"
#include "usb_lld.h"
#define USB_MAX_PACKET_SIZE 64 /* For FS device */
enum STANDARD_REQUESTS
{
GET_STATUS = 0,
CLEAR_FEATURE,
RESERVED1,
SET_FEATURE,
RESERVED2,
SET_ADDRESS,
GET_DESCRIPTOR,
SET_DESCRIPTOR,
GET_CONFIGURATION,
SET_CONFIGURATION,
GET_INTERFACE,
SET_INTERFACE,
SYNCH_FRAME,
TOTAL_REQUEST /* Total number of Standard request */
};
/* The state machine states of a control pipe */
enum CONTROL_STATE
{
WAIT_SETUP,
IN_DATA,
OUT_DATA,
LAST_IN_DATA,
WAIT_STATUS_IN,
WAIT_STATUS_OUT,
STALLED,
};
enum FEATURE_SELECTOR
{
FEATURE_ENDPOINT_HALT=0,
FEATURE_DEVICE_REMOTE_WAKEUP=1
};
#include "usb_lld_driver.h"
#define REG_BASE (0x40005C00UL) /* USB_IP Peripheral Registers base address */
#define PMA_ADDR (0x40006000UL) /* USB_IP Packet Memory Area base address */

View File

@@ -47,7 +47,7 @@
#include <poll.h>
#include <usb_lld.h>
#include <usb_lld_common.h>
#include <usb_lld_driver.h>
#include <alloca.h>
@@ -200,15 +200,12 @@ static struct usb_controller usbc;
static void
notify_device (uint8_t intr, uint8_t ep_num, uint8_t dir)
{
extern sigset_t ss_cur;
pthread_mutex_lock (&usbc.mutex);
if (usbc.intr)
pthread_cond_wait (&usbc.cond, &usbc.mutex);
usbc.intr = intr;
usbc.dir = (dir == USBIP_DIR_IN);
usbc.ep_num = ep_num;
fprintf (stderr, "sigmask: %08llx\n", *(long long *)&ss_cur);
pthread_kill (tid_main, SIGUSR1);
pthread_mutex_unlock (&usbc.mutex);
}

View File

@@ -134,12 +134,19 @@ uint8_t usb_lld_current_configuration (struct usb_dev *dev);
void usb_lld_prepare_shutdown (void);
void usb_lld_shutdown (void);
#ifdef MCU_KINETIS_L
#if defined(MCU_KINETIS_L)
void usb_lld_tx_enable_buf (int ep_num, const void *buf, size_t len);
void usb_lld_rx_enable_buf (int ep_num, void *buf, size_t len);
void usb_lld_setup_endp (struct usb_dev *dev, int ep_num, int rx_en, int tx_en);
void usb_lld_stall (int ep_num);
#elif defined(GNU_LINUX_EMULATION)
void usb_lld_tx_enable_buf (int ep_num, const void *buf, size_t len);
void usb_lld_rx_enable_buf (int ep_num, void *buf, size_t len);
void usb_lld_setup_endp (struct usb_dev *dev, int ep_num, int rx_en, int tx_en);
void usb_lld_stall_tx (int ep_num);
void usb_lld_stall_rx (int ep_num);
#else
/* EP_TYPE[1:0] EndPoint TYPE */
#define EP_BULK (0x0000) /* EndPoint BULK */

37
usb_lld_driver.h Normal file
View File

@@ -0,0 +1,37 @@
#define USB_MAX_PACKET_SIZE 64 /* For FS device */
enum STANDARD_REQUESTS
{
GET_STATUS = 0,
CLEAR_FEATURE,
RESERVED1,
SET_FEATURE,
RESERVED2,
SET_ADDRESS,
GET_DESCRIPTOR,
SET_DESCRIPTOR,
GET_CONFIGURATION,
SET_CONFIGURATION,
GET_INTERFACE,
SET_INTERFACE,
SYNCH_FRAME,
TOTAL_REQUEST /* Total number of Standard request */
};
/* The state machine states of a control pipe */
enum CONTROL_STATE
{
WAIT_SETUP,
IN_DATA,
OUT_DATA,
LAST_IN_DATA,
WAIT_STATUS_IN,
WAIT_STATUS_OUT,
STALLED,
};
enum FEATURE_SELECTOR
{
FEATURE_ENDPOINT_HALT=0,
FEATURE_DEVICE_REMOTE_WAKEUP=1
};