📄 qe.h
字号:
/* * Copyright (C) 2006 Freescale Semicondutor, Inc. All rights reserved. * * Authors: Shlomi Gridish <gridish@freescale.com> * Li Yang <leoli@freescale.com> * * Description: * QUICC Engine (QE) external definitions and structure. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */#ifndef _ASM_POWERPC_QE_H#define _ASM_POWERPC_QE_H#ifdef __KERNEL__#include <asm/immap_qe.h>#define QE_NUM_OF_SNUM 28#define QE_NUM_OF_BRGS 16#define QE_NUM_OF_PORTS 1024/* Memory partitions*/#define MEM_PART_SYSTEM 0#define MEM_PART_SECONDARY 1#define MEM_PART_MURAM 2/* Export QE common operations */extern void qe_reset(void);extern int par_io_init(struct device_node *np);extern int par_io_of_config(struct device_node *np);extern int par_io_config_pin(u8 port, u8 pin, int dir, int open_drain, int assignment, int has_irq);extern int par_io_data_set(u8 port, u8 pin, u8 val);/* QE internal API */int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input);void qe_setbrg(unsigned int brg, unsigned int rate, unsigned int multiplier);int qe_get_snum(void);void qe_put_snum(u8 snum);unsigned long qe_muram_alloc(int size, int align);int qe_muram_free(unsigned long offset);unsigned long qe_muram_alloc_fixed(unsigned long offset, int size);void qe_muram_dump(void);void *qe_muram_addr(unsigned long offset);/* Buffer descriptors */struct qe_bd { __be16 status; __be16 length; __be32 buf;} __attribute__ ((packed));#define BD_STATUS_MASK 0xffff0000#define BD_LENGTH_MASK 0x0000ffff#define BD_SC_EMPTY 0x8000 /* Receive is empty */#define BD_SC_READY 0x8000 /* Transmit is ready */#define BD_SC_WRAP 0x2000 /* Last buffer descriptor */#define BD_SC_INTRPT 0x1000 /* Interrupt on change */#define BD_SC_LAST 0x0800 /* Last buffer in frame */#define BD_SC_CM 0x0200 /* Continous mode */#define BD_SC_ID 0x0100 /* Rec'd too many idles */#define BD_SC_P 0x0100 /* xmt preamble */#define BD_SC_BR 0x0020 /* Break received */#define BD_SC_FR 0x0010 /* Framing error */#define BD_SC_PR 0x0008 /* Parity error */#define BD_SC_OV 0x0002 /* Overrun */#define BD_SC_CD 0x0001 /* ?? *//* Alignment */#define QE_INTR_TABLE_ALIGN 16 /* ??? */#define QE_ALIGNMENT_OF_BD 8#define QE_ALIGNMENT_OF_PRAM 64/* RISC allocation */enum qe_risc_allocation { QE_RISC_ALLOCATION_RISC1 = 1, /* RISC 1 */ QE_RISC_ALLOCATION_RISC2 = 2, /* RISC 2 */ QE_RISC_ALLOCATION_RISC1_AND_RISC2 = 3 /* Dynamically choose RISC 1 or RISC 2 */};/* QE extended filtering Table Lookup Key Size */enum qe_fltr_tbl_lookup_key_size { QE_FLTR_TABLE_LOOKUP_KEY_SIZE_8_BYTES = 0x3f, /* LookupKey parsed by the Generate LookupKey CMD is truncated to 8 bytes */ QE_FLTR_TABLE_LOOKUP_KEY_SIZE_16_BYTES = 0x5f, /* LookupKey parsed by the Generate LookupKey CMD is truncated to 16 bytes */};/* QE FLTR extended filtering Largest External Table Lookup Key Size */enum qe_fltr_largest_external_tbl_lookup_key_size { QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_NONE = 0x0,/* not used */ QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_8_BYTES = QE_FLTR_TABLE_LOOKUP_KEY_SIZE_8_BYTES, /* 8 bytes */ QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_16_BYTES = QE_FLTR_TABLE_LOOKUP_KEY_SIZE_16_BYTES, /* 16 bytes */};/* structure representing QE parameter RAM */struct qe_timer_tables { u16 tm_base; /* QE timer table base adr */ u16 tm_ptr; /* QE timer table pointer */ u16 r_tmr; /* QE timer mode register */ u16 r_tmv; /* QE timer valid register */ u32 tm_cmd; /* QE timer cmd register */ u32 tm_cnt; /* QE timer internal cnt */} __attribute__ ((packed));#define QE_FLTR_TAD_SIZE 8/* QE extended filtering Termination Action Descriptor (TAD) */struct qe_fltr_tad { u8 serialized[QE_FLTR_TAD_SIZE];} __attribute__ ((packed));/* Communication Direction */enum comm_dir { COMM_DIR_NONE = 0, COMM_DIR_RX = 1, COMM_DIR_TX = 2, COMM_DIR_RX_AND_TX = 3};/* Clocks and BRGs */enum qe_clock { QE_CLK_NONE = 0, QE_BRG1, /* Baud Rate Generator 1 */ QE_BRG2, /* Baud Rate Generator 2 */ QE_BRG3, /* Baud Rate Generator 3 */ QE_BRG4, /* Baud Rate Generator 4 */ QE_BRG5, /* Baud Rate Generator 5 */ QE_BRG6, /* Baud Rate Generator 6 */ QE_BRG7, /* Baud Rate Generator 7 */ QE_BRG8, /* Baud Rate Generator 8 */ QE_BRG9, /* Baud Rate Generator 9 */ QE_BRG10, /* Baud Rate Generator 10 */ QE_BRG11, /* Baud Rate Generator 11 */ QE_BRG12, /* Baud Rate Generator 12 */ QE_BRG13, /* Baud Rate Generator 13 */ QE_BRG14, /* Baud Rate Generator 14 */ QE_BRG15, /* Baud Rate Generator 15 */ QE_BRG16, /* Baud Rate Generator 16 */ QE_CLK1, /* Clock 1 */ QE_CLK2, /* Clock 2 */ QE_CLK3, /* Clock 3 */ QE_CLK4, /* Clock 4 */ QE_CLK5, /* Clock 5 */ QE_CLK6, /* Clock 6 */ QE_CLK7, /* Clock 7 */ QE_CLK8, /* Clock 8 */ QE_CLK9, /* Clock 9 */ QE_CLK10, /* Clock 10 */ QE_CLK11, /* Clock 11 */ QE_CLK12, /* Clock 12 */ QE_CLK13, /* Clock 13 */ QE_CLK14, /* Clock 14 */ QE_CLK15, /* Clock 15 */ QE_CLK16, /* Clock 16 */ QE_CLK17, /* Clock 17 */ QE_CLK18, /* Clock 18 */ QE_CLK19, /* Clock 19 */ QE_CLK20, /* Clock 20 */ QE_CLK21, /* Clock 21 */ QE_CLK22, /* Clock 22 */ QE_CLK23, /* Clock 23 */ QE_CLK24, /* Clock 24 */ QE_CLK_DUMMY,};/* QE CMXUCR Registers. * There are two UCCs represented in each of the four CMXUCR registers. * These values are for the UCC in the LSBs */#define QE_CMXUCR_MII_ENET_MNG 0x00007000#define QE_CMXUCR_MII_ENET_MNG_SHIFT 12#define QE_CMXUCR_GRANT 0x00008000#define QE_CMXUCR_TSA 0x00004000#define QE_CMXUCR_BKPT 0x00000100#define QE_CMXUCR_TX_CLK_SRC_MASK 0x0000000F/* QE CMXGCR Registers.*/#define QE_CMXGCR_MII_ENET_MNG 0x00007000#define QE_CMXGCR_MII_ENET_MNG_SHIFT 12#define QE_CMXGCR_USBCS 0x0000000f/* QE CECR Commands.*/#define QE_CR_FLG 0x00010000#define QE_RESET 0x80000000#define QE_INIT_TX_RX 0x00000000#define QE_INIT_RX 0x00000001#define QE_INIT_TX 0x00000002#define QE_ENTER_HUNT_MODE 0x00000003#define QE_STOP_TX 0x00000004#define QE_GRACEFUL_STOP_TX 0x00000005#define QE_RESTART_TX 0x00000006#define QE_CLOSE_RX_BD 0x00000007#define QE_SWITCH_COMMAND 0x00000007#define QE_SET_GROUP_ADDRESS 0x00000008#define QE_START_IDMA 0x00000009#define QE_MCC_STOP_RX 0x00000009#define QE_ATM_TRANSMIT 0x0000000a#define QE_HPAC_CLEAR_ALL 0x0000000b#define QE_GRACEFUL_STOP_RX 0x0000001a#define QE_RESTART_RX 0x0000001b#define QE_HPAC_SET_PRIORITY 0x0000010b#define QE_HPAC_STOP_TX 0x0000020b#define QE_HPAC_STOP_RX 0x0000030b#define QE_HPAC_GRACEFUL_STOP_TX 0x0000040b#define QE_HPAC_GRACEFUL_STOP_RX 0x0000050b#define QE_HPAC_START_TX 0x0000060b#define QE_HPAC_START_RX 0x0000070b#define QE_USB_STOP_TX 0x0000000a#define QE_USB_RESTART_TX 0x0000000b#define QE_QMC_STOP_TX 0x0000000c#define QE_QMC_STOP_RX 0x0000000d#define QE_SS7_SU_FIL_RESET 0x0000000e/* jonathbr added from here down for 83xx */#define QE_RESET_BCS 0x0000000a#define QE_MCC_INIT_TX_RX_16 0x00000003#define QE_MCC_STOP_TX 0x00000004#define QE_MCC_INIT_TX_1 0x00000005#define QE_MCC_INIT_RX_1 0x00000006#define QE_MCC_RESET 0x00000007#define QE_SET_TIMER 0x00000008#define QE_RANDOM_NUMBER 0x0000000c#define QE_ATM_MULTI_THREAD_INIT 0x00000011#define QE_ASSIGN_PAGE 0x00000012#define QE_ADD_REMOVE_HASH_ENTRY 0x00000013#define QE_START_FLOW_CONTROL 0x00000014#define QE_STOP_FLOW_CONTROL 0x00000015#define QE_ASSIGN_PAGE_TO_DEVICE 0x00000016#define QE_ASSIGN_RISC 0x00000010#define QE_CR_MCN_NORMAL_SHIFT 6#define QE_CR_MCN_USB_SHIFT 4#define QE_CR_MCN_RISC_ASSIGN_SHIFT 8#define QE_CR_SNUM_SHIFT 17/* QE CECR Sub Block - sub block of QE command.*/#define QE_CR_SUBBLOCK_INVALID 0x00000000#define QE_CR_SUBBLOCK_USB 0x03200000#define QE_CR_SUBBLOCK_UCCFAST1 0x02000000#define QE_CR_SUBBLOCK_UCCFAST2 0x02200000#define QE_CR_SUBBLOCK_UCCFAST3 0x02400000#define QE_CR_SUBBLOCK_UCCFAST4 0x02600000#define QE_CR_SUBBLOCK_UCCFAST5 0x02800000#define QE_CR_SUBBLOCK_UCCFAST6 0x02a00000#define QE_CR_SUBBLOCK_UCCFAST7 0x02c00000#define QE_CR_SUBBLOCK_UCCFAST8 0x02e00000#define QE_CR_SUBBLOCK_UCCSLOW1 0x00000000#define QE_CR_SUBBLOCK_UCCSLOW2 0x00200000#define QE_CR_SUBBLOCK_UCCSLOW3 0x00400000#define QE_CR_SUBBLOCK_UCCSLOW4 0x00600000#define QE_CR_SUBBLOCK_UCCSLOW5 0x00800000#define QE_CR_SUBBLOCK_UCCSLOW6 0x00a00000#define QE_CR_SUBBLOCK_UCCSLOW7 0x00c00000#define QE_CR_SUBBLOCK_UCCSLOW8 0x00e00000#define QE_CR_SUBBLOCK_MCC1 0x03800000#define QE_CR_SUBBLOCK_MCC2 0x03a00000#define QE_CR_SUBBLOCK_MCC3 0x03000000#define QE_CR_SUBBLOCK_IDMA1 0x02800000#define QE_CR_SUBBLOCK_IDMA2 0x02a00000#define QE_CR_SUBBLOCK_IDMA3 0x02c00000#define QE_CR_SUBBLOCK_IDMA4 0x02e00000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -