mirror of
https://github.com/espressif/esp-idf
synced 2025-03-10 01:29:21 -04:00
112 lines
3.9 KiB
C
112 lines
3.9 KiB
C
/*
|
|
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include "soc/gpio_sig_map.h"
|
|
#include "soc/interrupts.h"
|
|
#include "soc/usb_dwc_periph.h"
|
|
|
|
/* -------------------------------- Private --------------------------------- */
|
|
|
|
static const usb_fsls_serial_signal_conn_t fsls_signals = {
|
|
// Inputs
|
|
.rx_dp = USB_EXTPHY_VP_IDX,
|
|
.rx_dm = USB_EXTPHY_VM_IDX,
|
|
.rx_rcv = USB_EXTPHY_RCV_IDX,
|
|
// Outputs
|
|
.suspend_n = USB_EXTPHY_SUSPND_IDX,
|
|
.tx_enable_n = USB_EXTPHY_OEN_IDX,
|
|
.tx_dp = USB_EXTPHY_VPO_IDX,
|
|
.tx_dm = USB_EXTPHY_VMO_IDX,
|
|
.fs_edge_sel = USB_EXTPHY_SPEED_IDX,
|
|
};
|
|
|
|
static const usb_otg_signal_conn_t otg_signals = {
|
|
// Inputs
|
|
.iddig = USB_OTG_IDDIG_IN_IDX,
|
|
.avalid = USB_OTG_AVALID_IN_IDX,
|
|
.bvalid = USB_SRP_BVALID_IN_IDX,
|
|
.vbusvalid = USB_OTG_VBUSVALID_IN_IDX,
|
|
.sessend = USB_SRP_SESSEND_IN_IDX,
|
|
// Outputs
|
|
.idpullup = USB_OTG_IDPULLUP_IDX,
|
|
.dppulldown = USB_OTG_DPPULLDOWN_IDX,
|
|
.dmpulldown = USB_OTG_DMPULLDOWN_IDX,
|
|
.drvvbus = USB_OTG_DRVVBUS_IDX,
|
|
.chrgvbus = USB_SRP_CHRGVBUS_IDX,
|
|
.dischrgvbus = USB_SRP_DISCHRGVBUS_IDX,
|
|
};
|
|
|
|
static const usb_internal_phy_io_t internal_phy_io = {
|
|
.dp = 20,
|
|
.dm = 19,
|
|
};
|
|
|
|
/* --------------------------------- Public --------------------------------- */
|
|
|
|
const usb_dwc_info_t usb_dwc_info = {
|
|
.controllers = {
|
|
[0] = {
|
|
.fsls_signals = &fsls_signals,
|
|
.otg_signals = &otg_signals,
|
|
.internal_phy_io = &internal_phy_io,
|
|
.supported_phys = USB_PHY_INST_FSLS_INTERN_0,
|
|
.irq = ETS_USB_INTR_SOURCE,
|
|
.irq_2nd_cpu = -1,
|
|
},
|
|
},
|
|
};
|
|
|
|
/* ------------------------------- Deprecated ------------------------------- */
|
|
|
|
#include "soc/usb_periph.h"
|
|
/*
|
|
Note: These IO pins are deprecated. When connecting USB OTG to an external FSLS
|
|
PHY, the FSLS Serial Interface signals can be routed to any GPIO via the GPIO
|
|
matrix. Thus, this mapping of signals to IO pins is meaningless.
|
|
|
|
Todo: Remove in IDF v6.0 (IDF-9029)
|
|
*/
|
|
const usb_iopin_dsc_t usb_periph_iopins[] = {
|
|
{USBPHY_VP_NUM, USB_EXTPHY_VP_IDX, 0, 1},
|
|
{USBPHY_VM_NUM, USB_EXTPHY_VM_IDX, 0, 1},
|
|
{USBPHY_RCV_NUM, USB_EXTPHY_RCV_IDX, 0, 1},
|
|
{USBPHY_OEN_NUM, USB_EXTPHY_OEN_IDX, 1, 1},
|
|
{USBPHY_VPO_NUM, USB_EXTPHY_VPO_IDX, 1, 1},
|
|
{USBPHY_VMO_NUM, USB_EXTPHY_VMO_IDX, 1, 1},
|
|
{GPIO_MATRIX_CONST_ONE_INPUT, USB_OTG_IDDIG_IN_IDX, 0, 0}, //connected connector is mini-B
|
|
//connected connector is mini-B
|
|
{GPIO_MATRIX_CONST_ONE_INPUT, USB_SRP_BVALID_IN_IDX, 0, 0}, //HIGH to force USB device mode
|
|
{GPIO_MATRIX_CONST_ONE_INPUT, USB_OTG_VBUSVALID_IN_IDX, 0, 0}, //receiving a valid Vbus from host
|
|
{GPIO_MATRIX_CONST_ZERO_INPUT, USB_OTG_AVALID_IN_IDX, 0, 0},
|
|
{-1, -1, 0, 0}
|
|
};
|
|
|
|
/*
|
|
Bunch of constants for USB peripheral: GPIO signals
|
|
*/
|
|
const usb_phy_signal_conn_t usb_otg_periph_signal = {
|
|
.extphy_vp_in = USB_EXTPHY_VP_IDX,
|
|
.extphy_vm_in = USB_EXTPHY_VM_IDX,
|
|
.extphy_rcv_in = USB_EXTPHY_RCV_IDX,
|
|
.extphy_oen_out = USB_EXTPHY_OEN_IDX,
|
|
.extphy_vpo_out = USB_EXTPHY_VPO_IDX,
|
|
.extphy_vmo_out = USB_EXTPHY_VMO_IDX,
|
|
.extphy_suspend_in = USB_EXTPHY_SUSPND_IDX,
|
|
.extphy_speed_in = USB_EXTPHY_SPEED_IDX,
|
|
.srp_bvalid_in = USB_SRP_BVALID_IN_IDX,
|
|
.srp_sessend_in = USB_SRP_SESSEND_IN_IDX,
|
|
.srp_chrgvbus_out = USB_SRP_CHRGVBUS_IDX,
|
|
.srp_dischrgvbus_out = USB_SRP_DISCHRGVBUS_IDX,
|
|
.otg_iddig_in = USB_OTG_IDDIG_IN_IDX,
|
|
.otg_avalid_in = USB_OTG_AVALID_IN_IDX,
|
|
.otg_vbusvalid_in = USB_OTG_VBUSVALID_IN_IDX,
|
|
.otg_idpullup_out = USB_OTG_IDPULLUP_IDX,
|
|
.otg_dppulldown_out = USB_OTG_DPPULLDOWN_IDX,
|
|
.otg_dmpulldown_out = USB_OTG_DMPULLDOWN_IDX,
|
|
.otg_drvvbus_out = USB_OTG_DRVVBUS_IDX,
|
|
.module = PERIPH_USB_MODULE
|
|
};
|