Merge branch 'master' of github.com:ChibiOS/ChibiOS-Contrib

This commit is contained in:
barthess 2017-01-06 11:06:52 +03:00
commit 3e8fdd762a
8 changed files with 51 additions and 37 deletions

View File

@ -166,7 +166,7 @@ typedef enum {
/** /**
* @brief QEI counter type. * @brief QEI counter type.
*/ */
typedef int32_t qeicnt_t; typedef int16_t qeicnt_t;
/** /**
* @brief QEI delta type. * @brief QEI delta type.

View File

@ -251,7 +251,7 @@ typedef enum {
/** /**
* @brief QEI counter type. * @brief QEI counter type.
*/ */
typedef uint16_t qeicnt_t; typedef int16_t qeicnt_t;
/** /**
* @brief QEI delta type. * @brief QEI delta type.

View File

@ -1,5 +1,5 @@
/* /*
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -23,8 +23,8 @@
*/ */
#ifndef HAL_STM32_OTG_H_ #ifndef HAL_STM32_OTG_H
#define HAL_STM32_OTG_H_ #define HAL_STM32_OTG_H
/** /**
* @brief Number of the implemented endpoints in OTG_FS. * @brief Number of the implemented endpoints in OTG_FS.
@ -430,12 +430,16 @@ typedef struct {
* @name GCCFG register bit definitions * @name GCCFG register bit definitions
* @{ * @{
*/ */
/* Definitions for stepping 1.*/
#define GCCFG_NOVBUSSENS (1U<<21) /**< VBUS sensing disable. */ #define GCCFG_NOVBUSSENS (1U<<21) /**< VBUS sensing disable. */
#define GCCFG_SOFOUTEN (1U<<20) /**< SOF output enable. */ #define GCCFG_SOFOUTEN (1U<<20) /**< SOF output enable. */
#define GCCFG_VBUSBSEN (1U<<19) /**< Enable the VBUS sensing "B" #define GCCFG_VBUSBSEN (1U<<19) /**< Enable the VBUS sensing "B"
device. */ device. */
#define GCCFG_VBUSASEN (1U<<18) /**< Enable the VBUS sensing "A" #define GCCFG_VBUSASEN (1U<<18) /**< Enable the VBUS sensing "A"
device. */ device. */
/* Definitions for stepping 2.*/
#define GCCFG_VBDEN (1U<<21) /**< VBUS sensing enable. */
#define GCCFG_PWRDWN (1U<<16) /**< Power down. */ #define GCCFG_PWRDWN (1U<<16) /**< Power down. */
/** @} */ /** @} */
@ -571,7 +575,7 @@ typedef struct {
#define HCCHAR_EPDIR (1U<<15) /**< Endpoint direction. */ #define HCCHAR_EPDIR (1U<<15) /**< Endpoint direction. */
#define HCCHAR_EPNUM_MASK (15U<<11) /**< Endpoint number mask. */ #define HCCHAR_EPNUM_MASK (15U<<11) /**< Endpoint number mask. */
#define HCCHAR_EPNUM(n) ((n)<<11) /**< Endpoint number value. */ #define HCCHAR_EPNUM(n) ((n)<<11) /**< Endpoint number value. */
#define HCCHAR_MPS_MASK (0x7FFU<<0) /**< Maximum packet size mask. */ #define HCCHAR_MPS_MASK (0x7FFU<<0) /**< Maximum packet size mask. */
#define HCCHAR_MPS(n) ((n)<<0) /**< Maximum packet size value. */ #define HCCHAR_MPS(n) ((n)<<0) /**< Maximum packet size value. */
/** @} */ /** @} */
@ -590,6 +594,7 @@ typedef struct {
interrupt. */ interrupt. */
#define HCINT_STALL (1U<<3) /**< STALL response received #define HCINT_STALL (1U<<3) /**< STALL response received
interrupt. */ interrupt. */
#define HCINT_AHBERR (1U<<2) /**< AHB error interrupt. */
#define HCINT_CHH (1U<<1) /**< Channel halted. */ #define HCINT_CHH (1U<<1) /**< Channel halted. */
#define HCINT_XFRC (1U<<0) /**< Transfer completed. */ #define HCINT_XFRC (1U<<0) /**< Transfer completed. */
/** @} */ /** @} */
@ -611,7 +616,7 @@ typedef struct {
interrupt mask. */ interrupt mask. */
#define HCINTMSK_STALLM (1U<<3) /**< STALL response received #define HCINTMSK_STALLM (1U<<3) /**< STALL response received
interrupt mask. */ interrupt mask. */
#define HCINTMSK_AHBERRM (1U<<2) #define HCINTMSK_AHBERRM (1U<<2) /**< AHB error interrupt mask. */
#define HCINTMSK_CHHM (1U<<1) /**< Channel halted mask. */ #define HCINTMSK_CHHM (1U<<1) /**< Channel halted mask. */
#define HCINTMSK_XFRCM (1U<<0) /**< Transfer completed mask. */ #define HCINTMSK_XFRCM (1U<<0) /**< Transfer completed mask. */
/** @} */ /** @} */
@ -924,6 +929,6 @@ typedef struct {
*/ */
#define OTG_HS ((stm32_otg_t *)OTG_HS_ADDR) #define OTG_HS ((stm32_otg_t *)OTG_HS_ADDR)
#endif /* _STM32_OTG_H_ */ #endif /* STM32_OTG_H */
/** @} */ /** @} */

View File

@ -59,7 +59,7 @@ static void otg_rxfifo_flush(USBHDriver *usbp);
static void otg_txfifo_flush(USBHDriver *usbp, uint32_t fifo); static void otg_txfifo_flush(USBHDriver *usbp, uint32_t fifo);
/*===========================================================================*/ /*===========================================================================*/
/* Little helper functions. */ /* Little helper functions. */
/*===========================================================================*/ /*===========================================================================*/
static inline void _move_to_pending_queue(usbh_ep_t *ep) { static inline void _move_to_pending_queue(usbh_ep_t *ep) {
list_move_tail(&ep->node, ep->pending_list); list_move_tail(&ep->node, ep->pending_list);
@ -84,7 +84,7 @@ static inline void _transfer_completed(usbh_ep_t *ep, usbh_urb_t *urb, usbh_urbs
#endif #endif
/*===========================================================================*/ /*===========================================================================*/
/* Functions called from many places. */ /* Functions called from many places. */
/*===========================================================================*/ /*===========================================================================*/
static void _transfer_completedI(usbh_ep_t *ep, usbh_urb_t *urb, usbh_urbstatus_t status) { static void _transfer_completedI(usbh_ep_t *ep, usbh_urb_t *urb, usbh_urbstatus_t status) {
osalDbgCheckClassI(); osalDbgCheckClassI();
@ -487,7 +487,7 @@ static uint32_t _write_packet(struct list_head *list, uint32_t space_available)
/*===========================================================================*/ /*===========================================================================*/
/* API. */ /* API. */
/*===========================================================================*/ /*===========================================================================*/
void usbh_lld_ep_object_init(usbh_ep_t *ep) { void usbh_lld_ep_object_init(usbh_ep_t *ep) {
@ -614,7 +614,7 @@ bool usbh_lld_urb_abort(usbh_urb_t *urb, usbh_urbstatus_t status) {
/*===========================================================================*/ /*===========================================================================*/
/* Channel Interrupts. */ /* Channel Interrupts. */
/*===========================================================================*/ /*===========================================================================*/
//CTRL(IN) CTRL(OUT) INT(IN) INT(OUT) BULK(IN) BULK(OUT) ISO(IN) ISO(OUT) //CTRL(IN) CTRL(OUT) INT(IN) INT(OUT) BULK(IN) BULK(OUT) ISO(IN) ISO(OUT)
@ -951,7 +951,7 @@ static inline void _hcint_int(USBHDriver *host) {
/*===========================================================================*/ /*===========================================================================*/
/* Host interrupts. */ /* Host interrupts. */
/*===========================================================================*/ /*===========================================================================*/
static inline void _sof_int(USBHDriver *host) { static inline void _sof_int(USBHDriver *host) {
udbg("SOF"); udbg("SOF");
@ -1214,7 +1214,7 @@ static void usb_lld_serve_interrupt(USBHDriver *host) {
/*===========================================================================*/ /*===========================================================================*/
/* Interrupt handlers. */ /* Interrupt handlers. */
/*===========================================================================*/ /*===========================================================================*/
#if STM32_USBH_USE_OTG1 #if STM32_USBH_USE_OTG1
@ -1239,7 +1239,7 @@ OSAL_IRQ_HANDLER(STM32_OTG2_HANDLER) {
/*===========================================================================*/ /*===========================================================================*/
/* Initialization functions. */ /* Initialization functions. */
/*===========================================================================*/ /*===========================================================================*/
static void otg_core_reset(USBHDriver *usbp) { static void otg_core_reset(USBHDriver *usbp) {
stm32_otg_t *const otgp = usbp->otg; stm32_otg_t *const otgp = usbp->otg;
@ -1361,7 +1361,8 @@ static void _usbh_start(USBHDriver *usbh) {
if (&USBHD2 == usbh) { if (&USBHD2 == usbh) {
#endif #endif
/* OTG HS clock enable and reset.*/ /* OTG HS clock enable and reset.*/
rccEnableOTG_HS(FALSE); rccEnableOTG_HS(TRUE); // Enable HS clock when cpu is in sleep mode
rccDisableOTG_HSULPI(TRUE); // Disable HS ULPI clock when cpu is in sleep mode
rccResetOTG_HS(); rccResetOTG_HS();
otgp->GINTMSK = 0; otgp->GINTMSK = 0;
@ -1386,12 +1387,20 @@ static void _usbh_start(USBHDriver *usbh) {
otgp->PCGCCTL = 0; otgp->PCGCCTL = 0;
/* Internal FS PHY activation.*/ /* Internal FS PHY activation.*/
#if STM32_OTG_STEPPING == 1
#if defined(BOARD_OTG_NOVBUSSENS) #if defined(BOARD_OTG_NOVBUSSENS)
otgp->GCCFG = GCCFG_NOVBUSSENS | GCCFG_PWRDWN; otgp->GCCFG = GCCFG_NOVBUSSENS | GCCFG_PWRDWN;
#else #else
otgp->GCCFG = GCCFG_PWRDWN; otgp->GCCFG = GCCFG_PWRDWN;
#endif #endif
#elif STM32_OTG_STEPPING == 2
#if defined(BOARD_OTG_NOVBUSSENS)
otgp->GCCFG = GCCFG_PWRDWN;
#else
otgp->GCCFG = (GCCFG_VBDEN | GCCFG_PWRDWN);
#endif
#endif
/* 48MHz 1.1 PHY.*/ /* 48MHz 1.1 PHY.*/
otgp->HCFG = HCFG_FSLSS | HCFG_FSLSPCS_48; otgp->HCFG = HCFG_FSLSS | HCFG_FSLSPCS_48;
@ -1450,7 +1459,7 @@ void usbh_lld_start(USBHDriver *usbh) {
} }
/*===========================================================================*/ /*===========================================================================*/
/* Root Hub request handler. */ /* Root Hub request handler. */
/*===========================================================================*/ /*===========================================================================*/
usbh_urbstatus_t usbh_lld_root_hub_request(USBHDriver *usbh, uint8_t bmRequestType, uint8_t bRequest, usbh_urbstatus_t usbh_lld_root_hub_request(USBHDriver *usbh, uint8_t bmRequestType, uint8_t bRequest,
uint16_t wvalue, uint16_t windex, uint16_t wlength, uint8_t *buf) { uint16_t wvalue, uint16_t windex, uint16_t wlength, uint8_t *buf) {

View File

@ -15,8 +15,8 @@
limitations under the License. limitations under the License.
*/ */
#ifndef HAL_USBH_LLD_H_ #ifndef HAL_USBH_LLD_H
#define HAL_USBH_LLD_H_ #define HAL_USBH_LLD_H
#include "hal.h" #include "hal.h"
@ -150,4 +150,4 @@ uint8_t usbh_lld_roothub_get_statuschange_bitmap(USBHDriver *usbh);
#endif #endif
#endif /* HAL_USBH_LLD_H_ */ #endif /* HAL_USBH_LLD_H */

View File

@ -364,7 +364,7 @@ qeidelta_t qeiUpdateI(QEIDriver *qeip) {
"invalid state"); "invalid state");
cnt = qei_lld_get_count(qeip); cnt = qei_lld_get_count(qeip);
delta = cnt - qeip->last; delta = (qeicnt_t)(cnt - qeip->last);
qeip->last = cnt; qeip->last = cnt;
return delta; return delta;

View File

@ -69,7 +69,7 @@ static bool _classdriver_load(usbh_device_t *dev, uint8_t class,
/*===========================================================================*/ /*===========================================================================*/
/* Checks. */ /* Checks. */
/*===========================================================================*/ /*===========================================================================*/
static inline void _check_dev(usbh_device_t *dev) { static inline void _check_dev(usbh_device_t *dev) {
@ -92,7 +92,7 @@ static inline void _check_urb(usbh_urb_t *urb) {
} }
/*===========================================================================*/ /*===========================================================================*/
/* Main driver API. */ /* Main driver API. */
/*===========================================================================*/ /*===========================================================================*/
void usbhObjectInit(USBHDriver *usbh) { void usbhObjectInit(USBHDriver *usbh) {
@ -143,7 +143,7 @@ void usbhResume(USBHDriver *usbh) {
} }
/*===========================================================================*/ /*===========================================================================*/
/* Endpoint API. */ /* Endpoint API. */
/*===========================================================================*/ /*===========================================================================*/
void usbhEPObjectInit(usbh_ep_t *ep, usbh_device_t *dev, const usbh_endpoint_descriptor_t *desc) { void usbhEPObjectInit(usbh_ep_t *ep, usbh_device_t *dev, const usbh_endpoint_descriptor_t *desc) {
@ -183,7 +183,7 @@ static void _ep0_object_init(usbh_device_t *dev, uint16_t wMaxPacketSize) {
/*===========================================================================*/ /*===========================================================================*/
/* URB API. */ /* URB API. */
/*===========================================================================*/ /*===========================================================================*/
void usbhURBObjectInit(usbh_urb_t *urb, usbh_ep_t *ep, usbh_completion_cb callback, void usbhURBObjectInit(usbh_urb_t *urb, usbh_ep_t *ep, usbh_completion_cb callback,
@ -350,7 +350,7 @@ void _usbh_urb_completeI(usbh_urb_t *urb, usbh_urbstatus_t status) {
} }
/*===========================================================================*/ /*===========================================================================*/
/* Synchronous API. */ /* Synchronous API. */
/*===========================================================================*/ /*===========================================================================*/
usbh_urbstatus_t usbhBulkTransfer(usbh_ep_t *ep, usbh_urbstatus_t usbhBulkTransfer(usbh_ep_t *ep,
@ -419,7 +419,7 @@ usbh_urbstatus_t usbhControlRequest(usbh_device_t *dev,
} }
/*===========================================================================*/ /*===========================================================================*/
/* Standard request helpers. */ /* Standard request helpers. */
/*===========================================================================*/ /*===========================================================================*/
#define USBH_GET_DESCRIPTOR(type, value, index) \ #define USBH_GET_DESCRIPTOR(type, value, index) \
@ -523,7 +523,7 @@ bool usbhStdReqGetInterface(usbh_device_t *dev,
/*===========================================================================*/ /*===========================================================================*/
/* Device-related functions. */ /* Device-related functions. */
/*===========================================================================*/ /*===========================================================================*/
static uint8_t _find_address(USBHDriver *host) { static uint8_t _find_address(USBHDriver *host) {
@ -846,7 +846,7 @@ bool usbhDeviceReadString(usbh_device_t *dev, char *dest, uint8_t size,
/*===========================================================================*/ /*===========================================================================*/
/* Port processing functions. */ /* Port processing functions. */
/*===========================================================================*/ /*===========================================================================*/
static void _port_connected(usbh_port_t *port); static void _port_connected(usbh_port_t *port);
@ -1078,7 +1078,7 @@ void _usbh_port_disconnected(usbh_port_t *port) {
/*===========================================================================*/ /*===========================================================================*/
/* Hub processing functions. */ /* Hub processing functions. */
/*===========================================================================*/ /*===========================================================================*/
#if HAL_USBH_USE_HUB #if HAL_USBH_USE_HUB
@ -1176,7 +1176,7 @@ static void _hub_process(USBHDriver *host) {
#endif #endif
/*===========================================================================*/ /*===========================================================================*/
/* Main processing loop (enumeration, loading/unloading drivers, etc). */ /* Main processing loop (enumeration, loading/unloading drivers, etc). */
/*===========================================================================*/ /*===========================================================================*/
void usbhMainLoop(USBHDriver *usbh) { void usbhMainLoop(USBHDriver *usbh) {
@ -1200,7 +1200,7 @@ void usbhMainLoop(USBHDriver *usbh) {
/*===========================================================================*/ /*===========================================================================*/
/* IAD class driver. */ /* IAD class driver. */
/*===========================================================================*/ /*===========================================================================*/
#if HAL_USBH_USE_IAD #if HAL_USBH_USE_IAD
static usbh_baseclassdriver_t *iad_load(usbh_device_t *dev, const uint8_t *descriptor, uint16_t rem); static usbh_baseclassdriver_t *iad_load(usbh_device_t *dev, const uint8_t *descriptor, uint16_t rem);
@ -1258,7 +1258,7 @@ static void iad_unload(usbh_baseclassdriver_t *drv) {
/*===========================================================================*/ /*===========================================================================*/
/* Class driver loader. */ /* Class driver loader. */
/*===========================================================================*/ /*===========================================================================*/
static const usbh_classdriverinfo_t *usbh_classdrivers_lookup[] = { static const usbh_classdriverinfo_t *usbh_classdrivers_lookup[] = {

View File

@ -68,7 +68,7 @@
/*===========================================================================*/ /*===========================================================================*/
/* USB Class driver loader for MSD */ /* USB Class driver loader for MSD */
/*===========================================================================*/ /*===========================================================================*/
USBHMassStorageDriver USBHMSD[HAL_USBHMSD_MAX_INSTANCES]; USBHMassStorageDriver USBHMSD[HAL_USBHMSD_MAX_INSTANCES];
@ -234,7 +234,7 @@ static void _msd_unload(usbh_baseclassdriver_t *drv) {
/*===========================================================================*/ /*===========================================================================*/
/* MSD Class driver operations (Bulk-Only transport) */ /* MSD Class driver operations (Bulk-Only transport) */
/*===========================================================================*/ /*===========================================================================*/
@ -290,7 +290,7 @@ typedef struct {
/* ----------------------------------------------------- */ /* ----------------------------------------------------- */
/* SCSI Commands */ /* SCSI Commands */
/* ----------------------------------------------------- */ /* ----------------------------------------------------- */
/* Read 10 and Write 10 */ /* Read 10 and Write 10 */
@ -584,7 +584,7 @@ static msd_result_t scsi_write10(USBHMassStorageLUNDriver *lunp, uint32_t lba, u
/*===========================================================================*/ /*===========================================================================*/
/* Block driver data/functions */ /* Block driver data/functions */
/*===========================================================================*/ /*===========================================================================*/
USBHMassStorageLUNDriver MSBLKD[HAL_USBHMSD_MAX_LUNS]; USBHMassStorageLUNDriver MSBLKD[HAL_USBHMSD_MAX_LUNS];