⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s3c2440a_usbd.h

📁 S3C2440A的windows ce 5.0 bsp包
💻 H
📖 第 1 页 / 共 2 页
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
//  Header: s3c2440a_usbd.h
//
//  Defines the USB device controller CPU register layout and definitions.
//
#ifndef __S3C2440A_USBD_H
#define __S3C2440A_USBD_H

#if __cplusplus
extern "C" {
#endif

//------------------------------------------------------------------------------
//
//  Type: S3C2440A_USBD_REG    
//
//  Defines the USB device control register block. This register bank is
//  located by the constant S3C2440A_BASE_REG_PA_USBD in configuration file 
//  s3c2440_base_reg_cfg.h.
//

struct FUNC_ADDR_REG   // Function Address Register
{
    UINT8 func_addr       :7;    // function_address
    UINT8 addr_up         :1;    // addr_update
};

struct PWR_REG         // Power Management Register
{
    UINT8 sus_en          :1;    // suspend_en
    UINT8 sus_mo          :1;    // suspend_mode
    UINT8 mcu_res         :1;    // mcu_resume
    UINT8 usb_re          :1;    // usb_reset
    UINT8 rsvd0           :4;     
};

struct EP_INT_REG      // Endpoint Interrupt register
{
    UINT8 ep0_int         :1;    // ep0_interrupt
    UINT8 ep1_int         :1;    // ep1_interrupt
    UINT8 ep2_int         :1;    // ep2_interrupt
    UINT8 ep3_int         :1;    // ep3_interrupt
    UINT8 ep4_int         :1;    // ep4_interrupt
    UINT8 rsvd0           :3;
};

struct USB_INT_REG     // USB Interrupt Register
{
    UINT8 sus_int         :1;    // suspend inaterrupt
    UINT8 resume_int      :1;    // resume interrupt
    UINT8 reset_int       :1;    // reset interrupt
    UINT8 rsvd0           :5;
};

struct EP_INT_EN_REG   // Endpoint Interrupt Mask Register
{
    UINT8 ep0_int_en      :1;    // ep1_int_reg
    UINT8 ep1_int_en      :1;    // ep1_int_reg
    UINT8 ep2_int_en      :1;    // ep2_int_reg
    UINT8 ep3_int_en      :1;    // ep3_int_reg
    UINT8 ep4_int_en      :1;    // ep4_int_reg
    UINT8 rsvd0           :3;
};

struct USB_INT_EN_REG  // USB Interrupt Mask Register
{
    UINT8 sus_int_en      :1;    // suspend_int_en
    UINT8 rsvd1           :1;     
    UINT8 reset_int_en    :1;    // reset_enable_reg
    UINT8 rsvd0           :5;
};

struct FRAME_NUM1_REG  // Frame Number 1 Register
{
    UINT8 fr_n1           :8;    // frame_num1_reg
};

struct FRAME_NUM2_REG  // Frame Number 2 Register
{
    UINT8 fr_n2           :8;    // frame_num2_reg
};

struct INDEX_REG       // Index Register
{
    UINT8 index           :8;    // index_reg
};

// TODO - clean this up.

struct EP0ICSR1Bits             // EP0 & ICSR1 shared
{
    UINT8 opr_ipr       :1;
    UINT8 ipr_       	:1;
    UINT8 sts_     		:1;
    UINT8 de_ff      	:1;
    UINT8 se_sds     	:1;
    UINT8 sds_sts       :1;
    UINT8 sopr_cdt      :1;
    UINT8 sse_       	:1;
};

struct ICSR2Bits
{              // in csr2 areg
    UINT8 rsvd1      	:4;
    UINT8 in_dma_int_en :1;     // in_dma_int_en
    UINT8 mode_in       :1;     // mode_in
    UINT8 iso        	:1;         // iso/bulk mode
    UINT8 auto_set      :1;     // auto_set
};

struct OCSR1Bits
{              // out csr1 reg
    UINT8 out_pkt_rdy   :1;     // out packet reday
    UINT8 rsvd0      	:3;
    UINT8 fifo_flush 	:1;         // fifo_flush
    UINT8 send_stall 	:1;         // send_stall
    UINT8 sent_stall 	:1;             // sent_stall
    UINT8 clr_data_tog  :1;     // clear data toggle
};

struct OCSR2Bits
{              // out csr2 reg
    UINT8 rsvd0      		:5;
    UINT8 out_dma_int_en 	:1;     // out_dma_int_en
    UINT8 iso        		:1;     // iso/bulk mode
    UINT8 auto_clr       	:1;     // auto_clr
};

struct EP0FBits
{               // ep0 fifo reg
    UINT8 fifo_data      :8;     // fifo data
};

struct EP1FBits
{               // ep0 fifo reg
    UINT8 fifo_data      :8;     // fifo data
};

struct EP2FBits
{               // ep0 fifo reg
    UINT8 fifo_data      :8;     // fifo data
};

struct EP3FBits
{               // ep0 fifo reg
    UINT8 fifo_data      :8;     // fifo data
};

struct EP4FBits
{               // ep0 fifo reg
    UINT8 fifo_data      :8;     // fifo data
};

struct MAXPBits
{
    UINT8 maxp       :4;     // max packet reg
    UINT8 rsvd0      :4;
};

struct OFCR1Bits
{              // out_fifo_cnt1_reg
    UINT8 out_cnt_low    :8;     // out_cnt_low
};

struct OFCR2Bits
{              // out_fifo_cnt2_reg
    UINT8 out_cnt_high   :8;     // out_cnt_high
};

struct EP1DCBits
{              // ep1 dma interface control
    UINT8 dma_mo_en      :1;     // dma_mode_en
    UINT8 in_dma_run     :1;     // in_dma_run
    UINT8 orb_odr        :1;     // out_run_ob/out_dma_run
    UINT8 demand_mo      :1;     // demand_mode
    UINT8 state      	 :3;     // state
    UINT8 in_run_ob      :1;     // in_run_ob
};

struct EP2DCBits
{              // ep2 dma interface control
    UINT8 dma_mo_en      :1;     // dma_mode_en
    UINT8 in_dma_run     :1;     // in_dma_run
    UINT8 orb_odr        :1;     // out_run_ob/out_dma_run
    UINT8 demand_mo      :1;     // demand_mode
    UINT8 state      	 :3;     // state
    UINT8 in_run_ob      :1;     // in_run_ob
};

struct EP3DCBits
{              // ep3 dma interface control
    UINT8 dma_mo_en      :1;     // dma_mode_en
    UINT8 in_dma_run     :1;     // in_dma_run
    UINT8 orb_odr        :1;     // out_run_ob/out_dma_run
    UINT8 demand_mo      :1;     // demand_mode
    UINT8 state      	 :3;     // state
    UINT8 in_run_ob      :1;     // in_run_ob
};

struct EP4DCBits
{              // ep4 dma interface control
    UINT8 dma_mo_en      :1;     // dma_mode_en
    UINT8 in_dma_run     :1;     // in_dma_run
    UINT8 orb_odr        :1;     // out_run_ob/out_dma_run
    UINT8 demand_mo      :1;     // demand_mode
    UINT8 state      	 :3;     // state
    UINT8 in_run_ob      :1;     // in_run_ob
};

struct EP1DUBits
{
    UINT8 ep1_unit_cnt   :8;     // ep0_unit_cnt
};

struct EP2DUBits
{
    UINT8 ep2_unit_cnt   :8;     // ep0_unit_cnt
};

struct EP3DUBits
{
    UINT8 ep3_unit_cnt   :8;     // ep0_unit_cnt
};

struct EP4DUBits
{
    UINT8 ep4_unit_cnt   :8;     // ep0_unit_cnt
};

struct EP1DFBits
{
    UINT8 ep1_fifo_cnt   :8;
};

struct EP2DFBits
{
    UINT8 ep2_fifo_cnt   :8;
};

struct EP3DFBits
{
    UINT8 ep3_fifo_cnt   :8;
};

struct EP4DFBits
{
    UINT8 ep4_fifo_cnt   :8;
};

struct EP1DTLBits
{
    UINT8 ep1_ttl_l      :8;
};

struct EP1DTMBits
{
    UINT8 ep1_ttl_m      :8;
};

struct EP1DTHBits
{
    UINT8 ep1_ttl_h      :8;
};

struct EP2DTLBits
{
    UINT8 ep2_ttl_l      :8;
};

struct EP2DTMBits
{
    UINT8 ep2_ttl_m      :8;
};

struct EP2DTHBits
{
    UINT8 ep2_ttl_h      :8;
};

struct EP3DTLBits
{
    UINT8 ep3_ttl_l      :8;
};

struct EP3DTMBits
{
    UINT8 ep3_ttl_m      :8;
};

struct EP3DTHBits
{
    UINT8 ep3_ttl_h      :8;
};

struct EP4DTLBits
{
    UINT8 ep4_ttl_l      :8;
};

struct EP4DTMBits
{
    UINT8 ep4_ttl_m      :8;
};

struct EP4DTHBits
{
    UINT8 ep4_ttl_h      :8;
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -