Utilizing Extra FC Credits for PCI Express Inbound Posted Memory Write Transactions in PowerQUICC III Devices

Similar documents
MPC7410 RISC Microprocessor Hardware Specifications Addendum for the MPC7410TxxnnnLE Series

MPC5200(b) ATA MDMA, UDMA Functionality BestComm Setup Recommendations

Design Recommendations to Implement Compatibility Between the MC13783VK and the MC13783VK5

Updating the Firmware on USB SPI Boards (KITUSBSPIEVME, KITUSBSPIDGLEVME)

SGTL5000 I 2 S DSP Mode

MC56F825x/MC56F824x (2M53V) Chip Errata

MTIM Driver for the MC9S08GW64

PowerQUICC HDLC Support and Example Code

Upgrade the Solution With No Changes 2 Upgrade the Solution With No Changes If a Codebase does not contain updates to its properties, it is possible t

Using the PowerQUICC II Auto-Load Feature

Using an I 2 C EEPROM During MSC8157 Initialization

MPR121 Jitter and False Touch Detection

PCB Layout Guidelines for the MC1321x

MPC8349E-mITX-GP Board Errata

USB Bootloader GUI User s Guide

IIC Driver for the MC9S08GW64

MPR121 Proximity Detection

Using the CAU and mmcau in ColdFire, ColdFire+ and Kinetis

VortiQa Enterprise Quick Start Guide

Changing the i.mx51 NAND Flash Model for Windows Embedded CE TM 6.0

MC33696MODxxx Kit. 1 Overview. Freescale Semiconductor Quick Start Guide. Document Number: MC33696MODUG Rev. 0, 05/2007

MSC8144AMC-S Getting Started Guide

Introduction to the S12G Family EEPROM Including a Comparison between the S08DZ, S12XE, and S12P Families

Managing Failure Detections and Using Required Components to Meet ISO7637 pulse 1 on MC33903/4/5 Common Mode Choke Implementation

Differences Between the DSP56301, DSP56311, and DSP56321

PDB Driver for the MC9S08GW64

Using the ColdFire+ Family Enhanced EEPROM Functionality Melissa Hunter Derrick Klotz

Using the Kinetis Family Enhanced EEPROM Functionality

MPC8260 IDMA Timing Diagrams

1 Introduction. 2 Problem statement. Freescale Semiconductor Engineering Bulletin. Document Number: EB727 Rev. 0, 01/2010

Using DMA to Emulate ADC Flexible Scan Mode on Kinetis K Series

MCF54451, MCF54452, MCF54453, MCF54454,

16-bit MCU: S12XHY256 Automotive Cluster Demo by: Jose M. Cisneros Steven McLaughlin Applications Engineer Microcontroller Solutions Group, Scotland

Electrode Graphing Tool IIC Driver Errata Microcontroller Division

i.mx31 PDK Power Measurement with GUI

Pad Configuration and GPIO Driver for MPC5500 Martin Kaspar, EMEAGTM, Roznov Daniel McKenna, MSG Applications, East Kilbride

Use of PGA on MC56F800x Interaction of PDB, PGA and ADC

Using GCR4 to Adjust Ethernet Timing in MSC8144 DSPs

ColdFire Convert 1.0 Users Manual by: Ernest Holloway

etpu Automotive Function Set (Set 2)

Migrating from the MPC852T to the MPC875

Using the Asynchronous DMA features of the Kinetis L Series

Interfacing MPC5500 Microcontrollers to the MFR4310 FlexRay Controller Robert Moran MCD Applications, East Kilbride, Scotland

Mask Set Errata for Mask 2M40J

Using the Project Board LCD Display at 3.3 volts

EchoRemote Evaluation Software for Windows

etpu General Function Set (Set 1) David Paterson MCD Applications Engineer

Component Development Environment Installation Guide

Mechanical Differences Between the 196-pin MAP-BGA and 196-pin PBGA Packages

Interfacing and Configuring the i.mx25 Flash Devices

Errata to MPC8569E PowerQUICC III Integrated Processor Reference Manual, Rev. 2

Errata to the MPC8280 PowerQUICC II Family Reference Manual, Rev. 1

HC912D60A / HC912Dx128A 0.5µ Microcontrollers Mask sets 2K38K, 1L02H/2L02H/3L02H & K91D, 0L05H/1L05H/2L05H

MPC8569E Instruction RAM Microcode Package Release 169

Power Cycling Algorithm using the MMA73x0L 3-Axis Linear Accelerometer

Converting Earlier Versions of CodeWarrior for StarCore DSPs Projects to Version

Optically-Isolated Multilink BDM Interface for the S08/S12 Microcontrollers by Michael A. Steffen

SCI Driver for the MC9S08GW64

Interrupts in Decoupled Parallel Mode for MPC5675K Configuration and Usage

Support for IEEE 1588 Protocol in PowerQUICC and QorIQ Processors

Using the Multi-Axis g-select Evaluation Boards

Mask Set Errata for Mask 5L35K

56F8300 BLDC Motor Control Application

Keil uvision 4 Kinetis Support for Freescale MQX RTOS Release Notes

MCF5445x Configuration and Boot Options Michael Norman Microcontroller Division

Using the Knock Window etpu Function

PowerQUICC II Parity and ECC Capability

MC9S08DZ60 Migrating from the 3M05C to M74K Mask Set D. Scott Brown Applications Engineering Microcontrollers Solutions Group Austin, TX, USA

56F805. BLDC Motor Control Application with Quadrature Encoder using Processor Expert TM Targeting Document. 56F bit Digital Signal Controllers

Multichannel Communication Controller HDLC Superchannel Mode on the MPC8560

MC33897 Single-Wire CAN Transceiver Reliability and Quality Documents

MPR083 Proximity Evaluation Kit User s Guide

i.mx51 WinCE Clock Setting

MC9S08DZ60 Flash Usage Considerations Andy McKechan Applications Engineer East Kilbride

MSC8144 Device Reset Configuration For the MSC8144ADS Board

Using IIC to Read ADC Values on MC9S08QG8

Mask Set Errata for Mask REV3.1_2N89D

Integrating the MC9S08JS16/8 USB Bootloader to Your Application

Addendum to HPCN User s Guide: Quick-Start Guide

Symphony SoundBite: Quick Start with Symphony Studio. Installation and Configuration

Media Streaming to i.mx31 PDK over Wireless LAN

MPC8260 SDRAM Timing Diagrams

Interfacing mddr and DDR2 Memories with i.mx25

Interfacing MPC5xx Microcontrollers to the MFR4310 FlexRay Controller David Paterson MCD Applications, East Kilbride

TLB Translation Setup for MPC745x and MPC744x in Non-Extended Mode

Sensorless BLDC Motor Control Based on MC9S08PT60 Tower Board User Guide

Table 1. Summary of MCF523x Errata. Errata Module Affected Date Errata Added Date Code Affected? < XXXX0501 XXXX0501 & < XXXX0511

NetComm Software Errata

Functional Differences Between the DSP56307 and DSP56L307

Gallium Arsenide PHEMT RF Power Field Effect Transistor

i.mx31 PDK 1.3 to PDK 1.4 Revision Changes Linux

Mask Set Errata for Mask 2N40C

Freescale Semiconductor. Integrated Silicon Pressure Sensor On-Chip Signal Conditioned, Temperature Compensated and Calibrated MP3V5050.

Writing Touch Sensing Software Using TSI Module

56F805. Digital Power Factor Correction using Processor Expert TM Targeting Document. 56F bit Digital Signal Controllers. freescale.

PMSM Vector Control with Encoder on Kinetis Setup Guide for Demo Kits without a Tablet PC

MC33794 Touch Panel System Using E-Field Sensor Setup Instructions

2005: 0.5 PQ-MDS-PCIEXP

Configuring the MCF5445x Family for PCI Host Operation

Clock Mode Selection for MSC8122 Mask Set K98M

Transcription:

Freescale Semiconductor Application Note Document Number: AN3781 Rev. 0, 06/2009 Utilizing Extra FC Credits for PCI Express Inbound Posted Memory Write Transactions in PowerQUICC III Devices This application note explains the procedures to utilize the extra FC (Flow Control) credits for PCI Express inbound posted memory write transactions, which is currently a hidden feature for all of the 8-capable Power QUICC III devices. NOTE This document is applicable for the following devices as well: MPC8610 MPC8640 MPC8640D MPC8641 MPC8641D Contents 1. Introduction..................................2 2. Developing the Desired code....................2 3. Porting the Code to a Real World Application Environment.................................4 4. Revision History..............................4 Freescale Semiconductor, Inc., 2009. All rights reserved.

Introduction 1 Introduction As described in the PCI Express chapter of the reference manual, current Power QUICC III devices feature Posted Header (PH) of 4 and Posted Data (PD) of 64 as FC credits initially advertised for PCI Express inbound memory write transactions, where 64 PD credits are equivalent to total data payloads of 4 transaction layer packets (TLPs) with 256-byte each as the maximum payload size. These initial FC credits advertised are plenty for all PCI Express x1, x2 and x4 applications. When x8 link width is implemented, some performance demanding PCI Express application might need some extra FC credits (PH and PD) for inbound posted memory write transaction. There is currently some hidden receiver buffer space available to satisfy this demand. When the SRIO interface of a Power QUICC III device is not enabled on the same SerDes port where x8 is selected as PCI Express link width, some hidden buffer space can be made available to the PCI Express receiver. This allows the x8 PCI Express interface to advertise and utilize 6 as PH and 96 as PD (equivalent to the total payload of 6 transaction layer packets (TLPs) with 256-byte each as the maximum payload size), therefore makes the aforesaid demand possible. The following sections describe the detailed procedure to follow when enabling the extra receiver buffer space is desired. Two service registers are involved to override the default posted FC credit initially advertised. 2 Developing the Desired code As a brief reference, the uboot commands utilized in the following sample code include both md (memory read) and mm (memory write) with the syntax below: md 12345678 // Memory Read to local space 0x12345678. Device returns result as 0xAABBCCDD. 12345678: AABBCCDD // Blue indicates system s console screen display mm 12345678 // Memory Write to local space 0x12345678 with write value of 0xFFFFFFFF 12345678: AABBCCDD? FFFFFFFF // Blue indicates system s console screen display The purpose of the procedure below is to ensure that the device with the code implemented behaves correctly as intended such that the similar code could be ported to real world application environment later. When SRIO is disabled, to enable the extra receiver buffer space for a x8 link width PCI Express controller, the following two events have to happen: The content of a service register located at the PCI Express controller's memory-mapped address offset 0xF10 needs to be changed from its reset default value so that 6 PH and 96 PD can be advertised and utilized for all inbound PCI Express posted memory write transactions. After the above modification, the other service register located at offset 0xF00 has to be tweaked to reset the corresponding PCI Express controller logic before the modification can take effect. To determine the full memory-mapped address of the service register located at offset 0xF10 or 0xF00, the following guideline needs to be followed: First of all, the device's CCSRBAR has to be determined. Second, the correct PCI Express controller with x8 link width implemented needs to be identified. 2 Freescale Semiconductor

Developing the Desired code Please note that for device with more than one PCI Express controllers that could be configured in x8 link width via the SerDes I/O Port Selection during POR configuration, the following rule applies when determining which PCI Express controller is allowed to utilize the extra receiver buffer space: If SRIO interface is disabled on the device, both x8 PCI Express controllers can utilize the extra receiver buffer space; If SRIO is enabled on SerDes 2 for example, the PCI Express controller not sharing the same SerDes port (the one mapped to SerDes 1 in this case) is allowed to utilize the extra receiver buffer space, as long as this PCI Express controller does not communicate with the enabled SRIO interface. Third, the memory-mapped block base address of the identified PCI Express controller needs to be determined. Once all above is identified, the full address of the service register located at offset 0xF10 or 0xF00 can be determined by appending all these three addresses together, such as CCSRBAR + PCI Express Controller's Block Base Address + 0xF10 or 0xF00. For example, the following example assumes that one of the Power QUICC III devices CCSRBAR is 0xF8000000 and the x8 link width PCI Express controller is PCI Express Controller 1 with block base address offset 0x0_A000. Therefore, the full address of the 0xF10 service register is 0xF800AF10. Users can figure out the correct address for their 0xF10 or 0xF00 service register in a similar fashion to reflect their actual application environment. The following sample code sequence uses uboot command to demonstrate how to alter the content of this 0xF10 offset service register and make the change take effect. md F800AF10 // Memory Read to the PCI Express Controller s memory-mapped address offset 0xF10 F800AF10: C8800000 // Device returns 0xC8800000 as the reset default of this register mm F800AF10 // Memory Write to controller s memory-mapped address offset 0xF10 with 0xE8806000 F800AF10: C8800000? E8806000 // Change 0xF10 s content to make it use 6 PH & corresponding PD. md F800AF10 // Memory Read to 0xF10 to verify whether the previous write takes place F800AF10: E8806000 // Device should returns 0xE8806000 on its console display // The following code sequence assumes that the reset default value of the PCI Express Controller memory-mapped offset 0xF00 is 0x80400080. In reality, the reset default of offset 0xF00 could be device-dependent. Please modify and implement the code accordingly for the actual application. md F800AF00 // Memory Read to the PCI Express Controller s memory-mapped address offset 0xF00 F800AF00: 80400080 // Assume the device returns 0x80400080 as the reset default mm F800AF00 // Memory Write to the PCI Express controller s offset 0xF00. Set bit 4 only, F800AF00: 80400080? 88400080 // while preserving the reset default values of all other bits. Wait 1 msec; mm F800AF00 // Memory Write to the PCI Express controller s offset 0xF00. Clear bit 4 only, F800AF00: 88400080? 80400080 // while preserving the reset default values of all other bits. Freescale Semiconductor 3

Porting the Code to a Real World Application Environment With the code sequence above, the related PCI Express Controller should be reset. The link will be re-trained with 6 PD and 96 PH shown up as the initial FC credits advertised for inbound Posted Memory Write TLPs. 3 Porting the Code to a Real World Application Environment After the correct code is developed to reflect the correct x8 PCI Express controller identified with the associated memory-mapped address for service registers based on the application s CCSRBAR, as well as the correct reset default value is determined for 0xF00 offset during the above code development, all the memory read steps in the above code sequence can be removed. In other words, only the correct memory writes are needed to be ported to a real world application s initialization code. If all the assumption in the previous section stays intact, the previous code sequence can be simplified into the following, which can then be easily ported to as part of an application s initialization code: mm F800AF10 // Memory Write to controller s memory-mapped address offset 0xF10 with 0xE8806000 F800AF10: C8800000? E8806000 // Change 0xF10 s content to make it use 6 PH & corresponding PD. mm F800AF00 // Memory Write to the PCI Express controller s offset 0xF00. Set bit 4 only, F800AF00: 80400080? 88400080 // while preserving the reset default values of all other bits. Wait 1 msec; mm F800AF00 // Memory Write to the PCI Express controller s offset 0xF00. Clear bit 4 only, F800AF00: 88400080? 80400080 // while preserving the reset default values of all other bits. 4 Revision History Table 1 provides a revision history for this application note. Table 1. Document Revision History Rev. Number Date Substantive Change(s) 0 06/2009 Initial public release. 4 Freescale Semiconductor

Revision History THIS PAGE INTENTIONALLY LEFT BLANK Freescale Semiconductor 5

How to Reach Us: Home Page: www.freescale.com Web Support: http://www.freescale.com/support USA/Europe or Locations Not Listed: Freescale Semiconductor, Inc. Technical Information Center, EL516 2100 East Elliot Road Tempe, Arizona 85284 1-800-521-6274 or +1-480-768-2130 www.freescale.com/support Europe, Middle East, and Africa: Freescale Halbleiter Deutschland GmbH Technical Information Center Schatzbogen 7 81829 Muenchen, Germany +44 1296 380 456 (English) +46 8 52200080 (English) +49 89 92103 559 (German) +33 1 69 35 48 48 (French) www.freescale.com/support Japan: Freescale Semiconductor Japan Ltd. Headquarters ARCO Tower 15F 1-8-1, Shimo-Meguro, Meguro-ku Tokyo 153-0064 Japan 0120 191014 or +81 3 5437 9125 support.japan@freescale.com Asia/Pacific: Freescale Semiconductor China Ltd. Exchange Building 23F No. 118 Jianguo Road Chaoyang District Beijing 100022 China +86 10 5879 8000 support.asia@freescale.com For Literature Requests Only: Freescale Semiconductor Literature Distribution Center 1-800 441-2447 or +1-303-675-2140 Fax: +1-303-675-2150 LDCForFreescaleSemiconductor @hibbertgroup.com Information in this document is provided solely to enable system and software implementers to use Freescale Semiconductor products. There are no express or implied copyright licenses granted hereunder to design or fabricate any integrated circuits or integrated circuits based on the information in this document. Freescale Semiconductor reserves the right to make changes without further notice to any products herein. Freescale Semiconductor makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does Freescale Semiconductor assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation consequential or incidental damages. Typical parameters which may be provided in Freescale Semiconductor data sheets and/or specifications can and do vary in different applications and actual performance may vary over time. All operating parameters, including Typicals must be validated for each customer application by customer s technical experts. Freescale Semiconductor does not convey any license under its patent rights nor the rights of others. Freescale Semiconductor products are not designed, intended, or authorized for use as components in systems intended for surgical implant into the body, or other applications intended to support or sustain life, or for any other application in which the failure of the Freescale Semiconductor product could create a situation where personal injury or death may occur. Should Buyer purchase or use Freescale Semiconductor products for any such unintended or unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor and its officers, employees, subsidiaries, affiliates, and distributors harmless against all claims, costs, damages, and expenses, and reasonable attorney fees arising out of, directly or indirectly, any claim of personal injury or death associated with such unintended or unauthorized use, even if such claim alleges that Freescale Semiconductor was negligent regarding the design or manufacture of the part. Freescale and the Freescale logo are trademarks or registered trademarks of Freescale Semiconductor, Inc. in the U.S. and other countries. All other product or service names are the property of their respective owners. Freescale Semiconductor, Inc., 2009. All rights reserved. Document Number: AN3781 Rev. 0 06/2009