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

📄 emu_utilities.c

📁 51 56546fdfffffffffffffffffffff34
💻 C
📖 第 1 页 / 共 2 页
字号:
/*==================================================================================================                                                                                   Module Name:  emu_utilities.c    General Description: This file provides utility function needed by the EMU common algorithm.====================================================================================================                               Motorola Confidential Proprietary                        Template ID and version: IL93-TMP-01-0106  Version 1.20                        (c) Copyright Motorola 2006, All Rights Reserved  Revision History:                            Modification     TrackingAuthor (core ID)                Date          Number     Description of Changes-------------------------   ------------    ----------   -------------------------------------------Jason Knopsnyder - w19069    05-Sep-2006    LIBjj66952   Use BOOST instead of BPLUS to power VUSBJason Knopsnyder - w19069    05-Apr-2006    LIBii35566   -Fix PPD audio xcvr state                                                         -Set 1.5K pullup when FSENB is set                                                         -Fix compiler warningsJason Knopsnyder - w19069    15-Feb-2006    LIBhh92145   Initial creationPortability: This module should is and shall be kept portable across all Motorola compilers and             platforms.====================================================================================================                                        INCLUDE FILES==================================================================================================*/                 #include "../../ghdr/emu_glue_api.h"#include "../hdr/emu_algorithm.h"/*==================================================================================================                          LOCAL TYPEDEFS (STRUCTURES, UNIONS, ENUMS)==================================================================================================*//*==================================================================================================                                 LOCAL FUNCTION PROTOTYPES==================================================================================================*//*==================================================================================================                                     LOCAL CONSTANTS==================================================================================================*//* Voltage supplied to the USB transceiver in mV */#define EMU_VUSB_OUT_3_3V               3300 #define EMU_VUSB_OUT_2_775V             2775/*==================================================================================================                                        LOCAL MACROS==================================================================================================*//*==================================================================================================                                      LOCAL VARIABLES==================================================================================================*//*==================================================================================================                                     GLOBAL VARIABLES==================================================================================================*//*==================================================================================================                                     LOCAL FUNCTIONS==================================================================================================*//*==================================================================================================                                       GLOBAL FUNCTIONS==================================================================================================*//*==================================================================================================FUNCTION:   emu_set_transceiver_state   DESCRIPTION: Title   This function is used to configure the transceiver, which includes   setting the state of USB suspend bit, enabling/disabling the transceiver,   setting the VUSB input source, setting the VUSB output voltage and setting   the state of the VUSB regulatorARGUMENTS PASSED:   state - The desired transceiver state    RETURN VALUE:   NonePRE-CONDITIONS:   NonePOST-CONDITIONS:   NoneIMPORTANT NOTES:   NOTE: BPLUS is not guaranteed to be available on all platforms so VINBUS must be used instead.   ==================================================================================================*/voidemu_set_transceiver_state(EMU_XCVR_STATE_T state){    static const struct    {        unsigned long usb_suspend       : 1;        unsigned long xcvr_enable       : 1;        unsigned long vusb_enable       : 1;        unsigned long vusb_input_source : 2;        unsigned long vusb_voltage      : 12;    } transceiver_config_table[EMU_XCVR_STATE__NUM] =    {        /*Transeiver State               USBS XEN VUEN VUSB INPUT SOURCE   VUSB VOLTAGE     */        /*EMU_XCVR_STATE_OFF         */ {1,   0,  1,   EMU_VUSB_IN_VINBUS, EMU_VUSB_OUT_3_3V},        /*EMU_XCVR_STATE_PPD_IDENTIFY*/ {1,   0,  1,   EMU_VUSB_IN_VINBUS, EMU_VUSB_OUT_3_3V},        /*EMU_XCVR_STATE_SPD_IDENTIFY*/ {1,   0,  1,   EMU_VUSB_IN_VBUS,   EMU_VUSB_OUT_3_3V},        /*EMU_XCVR_STATE_PPD         */ {1,   0,  1,   EMU_VUSB_IN_VINBUS, EMU_VUSB_OUT_3_3V},        /*EMU_XCVR_STATE_PPD_AUDIO   */ {1,   1,  1,   EMU_VUSB_IN_VINBUS, EMU_VUSB_OUT_3_3V},        /*EMU_XCVR_STATE_SPD         */ {1,   0,  1,   EMU_VUSB_IN_VBUS,   EMU_VUSB_OUT_3_3V},        /*EMU_XCVR_STATE_SPD_AUDIO   */ {1,   0,  1,   EMU_VUSB_IN_VBUS,   EMU_VUSB_OUT_3_3V},        /*EMU_XCVR_STATE_USB_HOST    */ {0,   1,  1,   EMU_VUSB_IN_VINBUS, EMU_VUSB_OUT_3_3V},        /*EMU_XCVR_STATE_FACTORY_MODE*/ {0,   1,  1,   EMU_VUSB_IN_VINBUS, EMU_VUSB_OUT_3_3V},    };    if (state >= EMU_XCVR_STATE__NUM)    {        state = EMU_XCVR_STATE_OFF;    }        /* Set the USB suspend bit */    EMU_GLUE_set_usb_suspend(transceiver_config_table[state].usb_suspend);    EMU_GLUE_set_transceiver_params(transceiver_config_table[state].xcvr_enable,                                    transceiver_config_table[state].vusb_enable,                                    (EMU_VUSB_IN_T)transceiver_config_table[state].vusb_input_source,                                    (unsigned short)transceiver_config_table[state].vusb_voltage);}/*==================================================================================================FUNCTION:   emu_configure_accessory   DESCRIPTION:    Configures the EMU related registers in the power IC for currently   connected accessory.   ARGUMENTS PASSED:   accessory - the currently connected accessory.    RETURN VALUE:   NonePRE-CONDITIONS:   NonePOST-CONDITIONS:   NoneIMPORTANT NOTES:   None==================================================================================================*/voidemu_configure_accessory(EMU_ACCY_T accessory){    static const struct    {        unsigned short dplus_150k_pull_up : 1;        unsigned short vbus_5k_pull_down  : 1;        unsigned short fsenb              : 1;        unsigned short transceiver_state  : 4;        unsigned short conn_mode          : 3;    } accessory_config_table[EMU_ACCY_TYPE__NUM_DEVICES] =    {        /*Accessory                        DPPU VBPD  FS  TRANSCEIVER STATE            CONN MODE               */        /*EMU_ACCY_TYPE_NONE              */ {1,   1,  0, EMU_XCVR_STATE_OFF,          EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_INVALID           */ {0,   1,  0, EMU_XCVR_STATE_OFF,          EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_NOT_SUPPORTED     */ {0,   1,  0, EMU_XCVR_STATE_OFF,          EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_CHARGER_MID       */ {0,   1,  0, EMU_XCVR_STATE_OFF,          EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_CHARGER_MID_MPX   */ {0,   1,  0, EMU_XCVR_STATE_OFF,          EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_CHARGER_FAST      */ {0,   1,  0, EMU_XCVR_STATE_OFF,          EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_CHARGER_FAST_MPX  */ {0,   1,  0, EMU_XCVR_STATE_OFF,          EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_CARKIT_MID        */ {0,   1,  0, EMU_XCVR_STATE_SPD_AUDIO,    EMU_CONN_MODE_MONO_AUDIO},        /*EMU_ACCY_TYPE_CARKIT_FAST       */ {0,   1,  0, EMU_XCVR_STATE_SPD_AUDIO,    EMU_CONN_MODE_MONO_AUDIO},        /*EMU_ACCY_TYPE_CABLE_USB         */ {0,   0,  0, EMU_XCVR_STATE_USB_HOST,     EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_CABLE_REGRESSION  */ {0,   0,  0, EMU_XCVR_STATE_USB_HOST,     EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_CABLE_FACTORY     */ {0,   0,  0, EMU_XCVR_STATE_FACTORY_MODE, EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_CABLE_USB_OTG     */ {0,   0,  0, EMU_XCVR_STATE_USB_HOST,     EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_HEADSET_EMU_MONO  */ {0,   1,  1, EMU_XCVR_STATE_PPD_AUDIO,    EMU_CONN_MODE_USB       },        /*EMU_ACCY_TYPE_HEADSET_EMU_STEREO*/ {0,   1,  1, EMU_XCVR_STATE_PPD_AUDIO,    EMU_CONN_MODE_USB       }    };    if (accessory >= EMU_ACCY_TYPE__NUM_DEVICES)    {        accessory = EMU_ACCY_TYPE_INVALID;    }        /* Set the D+ 150K pull up */    EMU_GLUE_set_dplus_150k_pull_up((unsigned long)accessory_config_table[accessory].dplus_150k_pull_up);    /* Set the VBUS 5K pull down */    EMU_GLUE_set_vbus_5k_pull_down((unsigned long)accessory_config_table[accessory].vbus_5k_pull_down);    /* Set the USB full speed bit so that the 1.5K pullup pulls up on the D- line */    EMU_GLUE_set_low_speed_mode((unsigned long)accessory_config_table[accessory].fsenb);    /* Enable the 1.5K pullup on the D- line if FSENB has been set to 1 */    EMU_GLUE_set_dplus_1_5k_pull_up((unsigned long)accessory_config_table[accessory].fsenb);        

⌨️ 快捷键说明

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