more chipidea
This commit is contained in:
		@@ -27,10 +27,6 @@
 | 
			
		||||
#ifndef _CI_HS_IMXRT_H_
 | 
			
		||||
#define _CI_HS_IMXRT_H_
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "fsl_device_registers.h"
 | 
			
		||||
 | 
			
		||||
static const ci_hs_controller_t _ci_controller[] =
 | 
			
		||||
@@ -44,18 +40,11 @@ static const ci_hs_controller_t _ci_controller[] =
 | 
			
		||||
  #endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void dcd_int_enable(uint8_t rhport)
 | 
			
		||||
{
 | 
			
		||||
  NVIC_EnableIRQ(_ci_controller[rhport].irqnum);
 | 
			
		||||
}
 | 
			
		||||
#define CI_DCD_INT_ENABLE(_p)   NVIC_EnableIRQ (_ci_controller[_p].irqnum)
 | 
			
		||||
#define CI_DCD_INT_DISABLE(_p)  NVIC_DisableIRQ(_ci_controller[_p].irqnum)
 | 
			
		||||
 | 
			
		||||
void dcd_int_disable(uint8_t rhport)
 | 
			
		||||
{
 | 
			
		||||
  NVIC_DisableIRQ(_ci_controller[rhport].irqnum);
 | 
			
		||||
}
 | 
			
		||||
#define CI_HCD_INT_ENABLE(_p)   NVIC_EnableIRQ (_ci_controller[_p].irqnum)
 | 
			
		||||
#define CI_HCD_INT_DISABLE(_p)  NVIC_DisableIRQ(_ci_controller[_p].irqnum)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -27,10 +27,6 @@
 | 
			
		||||
#ifndef _CI_HS_LPC18_43_H_
 | 
			
		||||
#define _CI_HS_LPC18_43_H_
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// LPCOpen for 18xx & 43xx
 | 
			
		||||
#include "chip.h"
 | 
			
		||||
 | 
			
		||||
@@ -40,18 +36,10 @@ static const ci_hs_controller_t _ci_controller[] =
 | 
			
		||||
  { .reg_base = LPC_USB1_BASE, .irqnum = USB1_IRQn, .ep_count = 4 }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void dcd_int_enable(uint8_t rhport)
 | 
			
		||||
{
 | 
			
		||||
  NVIC_EnableIRQ(_ci_controller[rhport].irqnum);
 | 
			
		||||
}
 | 
			
		||||
#define CI_DCD_INT_ENABLE(_p)   NVIC_EnableIRQ (_ci_controller[_p].irqnum)
 | 
			
		||||
#define CI_DCD_INT_DISABLE(_p)  NVIC_DisableIRQ(_ci_controller[_p].irqnum)
 | 
			
		||||
 | 
			
		||||
void dcd_int_disable(uint8_t rhport)
 | 
			
		||||
{
 | 
			
		||||
  NVIC_DisableIRQ(_ci_controller[rhport].irqnum);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 }
 | 
			
		||||
#endif
 | 
			
		||||
#define CI_HCD_INT_ENABLE(_p)   NVIC_EnableIRQ (_ci_controller[_p].irqnum)
 | 
			
		||||
#define CI_HCD_INT_DISABLE(_p)  NVIC_DisableIRQ(_ci_controller[_p].irqnum)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -127,7 +127,7 @@ typedef struct
 | 
			
		||||
  volatile uint32_t ENDPTSTAT;       ///< Endpoint Status
 | 
			
		||||
  volatile uint32_t ENDPTCOMPLETE;   ///< Endpoint Complete
 | 
			
		||||
  volatile uint32_t ENDPTCTRL[8];    ///< Endpoint Control 0 - 7
 | 
			
		||||
} ci_hs_regs_t, hcd_registers_t;
 | 
			
		||||
} ci_hs_regs_t;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,9 @@
 | 
			
		||||
  #error "Unsupported MCUs"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
// MACRO CONSTANT TYPEDEF
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
 | 
			
		||||
#define CI_HS_REG(_port)      ((ci_hs_regs_t*) _ci_controller[_port].reg_base)
 | 
			
		||||
 | 
			
		||||
@@ -52,9 +55,6 @@
 | 
			
		||||
  #define CleanInvalidateDCache_by_Addr(_addr, _dsize)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
// MACRO CONSTANT TYPEDEF
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
 | 
			
		||||
// ENDPTCTRL
 | 
			
		||||
enum {
 | 
			
		||||
@@ -230,6 +230,16 @@ void dcd_init(uint8_t rhport)
 | 
			
		||||
  dcd_reg->USBCMD |= USBCMD_RUN_STOP; // Connect
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dcd_int_enable(uint8_t rhport)
 | 
			
		||||
{
 | 
			
		||||
  CI_DCD_INT_ENABLE(rhport);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dcd_int_disable(uint8_t rhport)
 | 
			
		||||
{
 | 
			
		||||
  CI_DCD_INT_DISABLE(rhport);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dcd_set_address(uint8_t rhport, uint8_t dev_addr)
 | 
			
		||||
{
 | 
			
		||||
  // Response with status first before changing device address
 | 
			
		||||
 
 | 
			
		||||
@@ -34,47 +34,23 @@
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
// INCLUDE
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
#if CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX
 | 
			
		||||
  #include "fsl_device_registers.h"
 | 
			
		||||
#else
 | 
			
		||||
  // LPCOpen for 18xx & 43xx
 | 
			
		||||
  #include "chip.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "common/tusb_common.h"
 | 
			
		||||
#include "ci_hs_type.h"
 | 
			
		||||
#include "portable/ehci/ehci_api.h"
 | 
			
		||||
#include "ci_hs_type.h"
 | 
			
		||||
 | 
			
		||||
#if CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX
 | 
			
		||||
  #include "ci_hs_imxrt.h"
 | 
			
		||||
#elif TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX)
 | 
			
		||||
  #include "ci_hs_lpc18_43.h"
 | 
			
		||||
#else
 | 
			
		||||
  #error "Unsupported MCUs"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
// MACRO CONSTANT TYPEDEF
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
 | 
			
		||||
// TODO can be merged with dcd_controller_t
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  uint32_t regs_base;     // registers base
 | 
			
		||||
  const IRQn_Type irqnum; // IRQ number
 | 
			
		||||
}hcd_controller_t;
 | 
			
		||||
 | 
			
		||||
#if CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX
 | 
			
		||||
  static const hcd_controller_t _hcd_controller[] =
 | 
			
		||||
  {
 | 
			
		||||
    // RT1010 and RT1020 only has 1 USB controller
 | 
			
		||||
    #if FSL_FEATURE_SOC_USBHS_COUNT == 1
 | 
			
		||||
      { .regs_base = USB_BASE , .irqnum = USB_OTG1_IRQn }
 | 
			
		||||
    #else
 | 
			
		||||
      { .regs_base = USB1_BASE, .irqnum = USB_OTG1_IRQn },
 | 
			
		||||
      { .regs_base = USB2_BASE, .irqnum = USB_OTG2_IRQn }
 | 
			
		||||
    #endif
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
  static const hcd_controller_t _hcd_controller[] =
 | 
			
		||||
  {
 | 
			
		||||
    { .regs_base = LPC_USB0_BASE, .irqnum = USB0_IRQn },
 | 
			
		||||
    { .regs_base = LPC_USB1_BASE, .irqnum = USB1_IRQn }
 | 
			
		||||
  };
 | 
			
		||||
#endif
 | 
			
		||||
#define CI_HS_REG(_port)      ((ci_hs_regs_t*) _ci_controller[_port].reg_base)
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------+
 | 
			
		||||
// Controller API
 | 
			
		||||
@@ -82,7 +58,7 @@ typedef struct
 | 
			
		||||
 | 
			
		||||
bool hcd_init(uint8_t rhport)
 | 
			
		||||
{
 | 
			
		||||
  hcd_registers_t* hcd_reg = (hcd_registers_t*) _hcd_controller[rhport].regs_base;
 | 
			
		||||
  ci_hs_regs_t* hcd_reg = CI_HS_REG(rhport);
 | 
			
		||||
 | 
			
		||||
  // Reset controller
 | 
			
		||||
  hcd_reg->USBCMD |= USBCMD_RESET;
 | 
			
		||||
@@ -106,12 +82,12 @@ bool hcd_init(uint8_t rhport)
 | 
			
		||||
 | 
			
		||||
void hcd_int_enable(uint8_t rhport)
 | 
			
		||||
{
 | 
			
		||||
  NVIC_EnableIRQ(_hcd_controller[rhport].irqnum);
 | 
			
		||||
  CI_HCD_INT_ENABLE(rhport);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void hcd_int_disable(uint8_t rhport)
 | 
			
		||||
{
 | 
			
		||||
  NVIC_DisableIRQ(_hcd_controller[rhport].irqnum);
 | 
			
		||||
  CI_HCD_INT_DISABLE(rhport);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user