AN2534 PAC193X Integration Notes for ® Windows® 10 Driver Support Author: Razvan Ungureanu TABLE 2: REVISION HISTORY Inc. Rev# Date Description 1.0 20-June-2017 The information in this INTRODUCTION document apply to the This document describes the basic steps for integrating PAC193X driver releases: the PAC193X DC Power Monitor device in a Microsoft® 1.0, 1.1 and 1.2 Windows® 10 host system in order to enable support of the Windows® 10 PAC193X driver. HARDWARE INTEGRATION As the PAC193X device can be used in multiple ways The hardware integration must first address all the and in different system configurations, there are some electrical details specified in the device data sheet. For 2 specific hardware and BIOS configuration details that example, the device VDD IO must match the I C need to be addressed before loading the Windows® voltage. But the following hardware notes address only device driver. the hardware details that need specific configuration in ® The details about the PAC193X Windows® 10 device order to make them compatible with the Windows 10 driver loading, feature set and software interfaces are device driver: included in the PAC193X Windows® 10 Driver User’s •I2C bus controller Windows® support Guide that complements the information presented by • PAC193X VDD and SLOW/ALERT pin connections this document. • Channel shunt resistor values . TABLE 1: GLOSSARY OF TERMS AND • Channel polarity ACRONYMS I2C Bus Controller Windows® Support Acronym Term 2 E3 Energy Estimation Engine The PAC193X device I C/SMBus interface is by default configured in the I2C Mode. Mind that the SMBus EMI Energy Metering Interface protocol is not currently supported by Windows®. OS Operating System Therefore, the system integrators must connect the 2 CPU Central Processing Unit PAC devices to the I C bus controllers for which a Windows® 10 driver is available and the driver is SoC System on Chip compatible with the Windows® Simple Peripheral Bus EC Embedded Controller Framework Extension - SpbCx. This is a mandatory SPB Simple Peripheral Bus condition since the PAC193X Windows® 10 driver uses SpbCx SPB Framework Extension the SpbCx standard software interface in order to communicate with I2C slaves. ACPI Advanced Configuration and Power 2 Interface The I C bus controller may be located in the system CPU (SoC architecture), in the system Embedded ASL ACPI Source Language Controller (EC) or may be another device connected to BIOS Basic Input / Output System one of the system internal buses. OEM Original Equipment Manufacturer UUID Universal Unique Identifier PAC193X VDD and SLOW/ALERT Pin DSM Device Specific Method Connections I2C Inter- The usual PAC193X system integration scenario SMBUS System Management Bus assumes that the system power rails are also This document is provided as part of the Microchip monitored during the standby or shutdown system PAC193X Windows® 10 driver release and is subject to states. Therefore, the PAC device VDD pin should be change with new releases of the driver. connected to a system power rail that is not shut down by the system standby or power-down sequence. This The document revision number is Rev.1.0. way, the PAC device continues to be capable of

 2017 Microchip Technology Inc. DS00002534A-page 1 AN2534 accumulating the data about the system energy • Windows® E3 service is not able by design to consumption during the standby/shutdown state, if control the channel polarity ® desired. The PAC193X Windows device driver is able • The standard Energy Metering Interface (EMI) ® to retrieve and report this data to the Windows Energy through which the driver provides the energy Estimation Engine (E3) or user applications. figures to E3 service allows only positive integer In order to facilitate a longer period in values. standby/shutdown state, reducing the chances for accumulator register overflow, the device sample rate ACPI BIOS INTEGRATION should be reduced to a minimum. This also reduces energy use by the PAC193X device. In normal system Over and above any integration guidance provided in operation, this is done by the Windows® device driver this document, OEMs and system integrators are that reconfigures the CONTROL register SRN bits just responsible for creating a valid ACPI BIOS that before the operating system switches the system in the accurately reflects their hardware platform. This standby/shutdown state. In case of operating system includes the details of how the PAC193X is configured crash, eventually the system is forcibly shut down by and connected in the system. the user or by some automated safety mechanism. The The guidance provided in this section is limited to PAC device driver is not functional in case of a describing the details that are necessary to integrate ® Windows system crash but the PAC device can still be the PAC193X device that is part of a system with the reconfigured in slow sampling mode if the SLOW pin is PAC193X device driver and the Windows® operating driven high. The SLOW pin can be driven high by a system. hardware block that detects the system power OFF. For example, the SLOW pin can be driven by a transistor Appendix A: “Sample ACPI PAC193X Device that is gated by the CPU or by the main memory power Definition” of this document contains an example rails. Alternatively, the SLOW pin may be driven by the ACPI device definition, written in ACPI Source system Embedded Controller. The EC is usually an Language (ASL). The example illustrates how a always-ON device which controls various hardware low PAC193X is to be integrated into the ACPI BIOS. level housekeeping and also controls the system power Please refer to the Appendix A example when reading rails and the power ON sequence. this section. When the system is turned back ON, the PAC Appendix B: “Test the PAC193X ACPI Integration” Windows® device driver is able to detect that the of this document provides an example of easily SLOW pin was asserted and collects the data available tools and the process to follow in order to accumulated during this time period. This is possible quickly test the PAC193X integration into the system, because the driver makes sure that SLOW/ALERT pin without replacing the BIOS firmware in the system is always configured as SLOW and the SLOW pin FLASH. transitions trigger the accumulator registers limited refresh (these are PAC device default settings). PAC193X Device Description There are several per-device and per-channel Channel Shunt Resistor (RSENSE) configuration options that are defined when a The PAC193X Windows® device driver supports only PAC193X is built into a system. These options include: shunt resistor values that are integer values when •The I2C address for each PAC193X device in the expressed in milliohms. For instance, a value of 1.5 system; milliohms is not supported. • The power rail to which each PAC193X channel is The recommended shunt resistor tolerance is 1%. connected; •The RSENSE value configured for each channel; Channel Polarity • For which of the PAC193X channels the Windows® driver must not create the Energy Metering Interface By default, the PAC device channel configuration is for (EMI) (channels defined as private channels). unipolar voltage measurements. This configuration is preserved by the Windows® device driver during the These options, which are chosen on a per-platform initialization phase. Still, the user applications may basis, need to be communicated to the PAC193X change any channel to bipolar/bidirectional by calling a device driver. This allows the driver to properly inform ® dedicated driver interface. However, because the Windows about system power usage via the standard ® Windows® E3 service supports only positive energy Windows EMI. values, it is recommended to connect the PAC device The method for communicating these configuration SENSE pins to the power rails such that, by default, the options to the PAC193X driver is via the PAC193X VSENSE voltage is read as a positive value. There are device definition in the platform's ACPI BIOS. The OEM two reasons for this: is responsible for providing a proper ACPI device definition for each PAC193X device configured in the

DS00002534A-page 2  2017 Microchip Technology Inc. AN2534

system. Creating a proper definition for the PAC193X The RSENSE value is specified in milliohms and only device includes providing the device-specific integer values are allowed. configuration items outlined in this document. To indicate that a particular channel is not used on a The definition for the PAC193X device may be copied given PAC193X device (that is, no power calculations directly from the Appendix A: “Sample ACPI should be performed for it), set the channel's RSENSE PAC193X Device Definition” example, multiplied and value to zero. customized for the use on a particular system. The It is possible to use one or more PAC193X channels to items within the PAC193X device definition block that monitor power rails without exposing those will need to be changed to reflect a given system measurements to the Windows® Energy Metering configuration are highlighted and labeled with the tags Interface. Such channels are referred to as Private OEM: and TODO:. channels. The PAC193X device driver will calculate the As part of the PAC193X device definition a _DSM power usage for Private channels too, but will not (Device Specific Method) control method that create the standard EMI interface, and so the results corresponds to the Universal Unique Identifier - UUID - will not be accessible to Windows®. Still, the data 033771E0-1705-47B4-9535-D1BBE14D9A09 must calculated for a Private channel can be queried by user be specified, as shown in the example. This UUID is applications by using the Microchip-defined PAC193X reserved to Microchip for the PAC193X and must not device-specific IOCTLs. To indicate that a particular be changed. The PAC193X device driver relies on the channel is Private, one must configure the power rail _DSM control method supporting this UUID. name corresponding to that channel in _DSM function _DSM function ID 1 (again, refer to the example in ID 1 to return the empty string (that is, ""). Note that the Appendix A: “Sample ACPI PAC193X Device RSENSE value for Private channels must be valid and Definition”) returns a package that describes how must not be zero. each channel on the PAC193X device described by this OEMs and systems integrators must take great care in ACPI Device definition is configured. For each channel properly configuring the values for power rails and the name of the power rail to which that PAC193X RSENSE, because both Windows® and the PAC193X channel is connected must be supplied and the RSENSE device driver rely on these values being correct. There value configured for that channel. is no way for the PAC193X driver to know if a given Note that the supplied power rail names cannot be power rail name is valid, or more importantly, to know if arbitrary. They must be formed using predefined values the indicated PAC193X channel is actually connected that are valid Metered Hardware Names according to to the specified power rail. the Windows®-defined EMI power rail taxonomy. Please refer to Microsoft-supplied documentation for a more thorough description of valid power rail names. TABLE 3: PAC193X ACPI INTEGRATION PARAMETERS SUMMARY Parameter Type Value Comments _UID integer >= 1 Each PAC device in the system must have unique _UID. I2C 7-bit Slave Address integer The value selected by The Address Select Resistor table from the ADDRSEL pin. device data sheet provides the supported address values and their associated resistor values. There are 16 possibilities. I2C Connection Speed integer Typ: 400000 The selected speed must match the I2C bus Max: 1000000 controller supported speed. I2C Controller name string The ACPI name of the The I2C bus controller driver must have Windows® I2C bus controller. 10 SpbCx compliant driver. Channel Name string "" or non-empty string • "": empty string denotes a Private channel • Non-empty string must comply with Microsoft power rail naming taxonomy.

RSENSE value integer 0 or non-zero • Expressed in milliohms • 0: the channel is not connected. No data is reported for this channel. • Non-zero: the value of the shunt resistor, must fit into a 32-bit unsigned integer.

 2017 Microchip Technology Inc. DS00002534A-page 3 AN2534

APPENDIX A: SAMPLE ACPI PAC193X DEVICE DEFINITION

Scope(\_SB) { // // Example PAC193X ASL // // Illustrates both how to define how the PAC193X is connected to // the I2C Controller, and also the required Device Specific Method (DSM) // that is used to return power rail configuration information to the driver. // Device(PA01) { Name(_HID, "MCHP1930") // // OEM: TODO: Each PAC device in the system must have unique _UID // Name(_UID, 1) // // Lowest power D-State supported by the device is D3 // Name (_S0W, 3) // // Status: // Device is present, enabled, and functioning properly // Method(_STA, 0x0, NotSerialized) { Return(0xf) } // // Current Resources Settings // Method(_CRS, 0x0, NotSerialized) { Name(RBUF, ResourceTemplate() { // // OEM: TODO: Specify the details of how this // 139x device is connected to the system. // I2CSerialBus(0x10, // 7-bit Slave Address ControllerInitiated, // Slave or master? 00000, // Connection Speed in hz AddressingMode7Bit, // 7-bit or 10-bit addressing? "\\_SB.I2C6", // I2C Controller to which PAC // is connected 0, // Resource Index ResourceConsumer) // Consumer or Producer? }) Return(RBUF) } // // _DSM - Device Specific Method // // This method returns configuration information that tells the driver // which devices each line in the PAC193X is wired to monitor. // Names of the monitored devices must come from the Microsoft-defined

DS00002534A-page 4  2017 Microchip Technology Inc. AN2534

// power rail taxonomy. // // The UUID for the Microchip PAC193X's DSM is // {033771E0-1705-47B4-9535-D1BBE14D9A09}. // This is unique to the device, and must match what the Windows PAC193X // driver expects. // // Returns: // Either: A Buffer (for Functions 0 and 2, or an error) // A Package containing EMI resources (rail/resistor pairs) // // Input Arguments (per _DSM standard): // // Arg0: UUID - Function Identifier // Arg1: Integer - Revision // Arg2: Integer - Function Index // Arg3: Package - Parameters (not used in our implementation) // Function(_DSM, {BuffObj, PkgObj}, {BuffObj, IntObj, IntObj, PkgObj}) { // // Is our UUID being invoked? // if(LNotEqual(Arg0, ToUUID("033771E0-1705-47B4-9535-D1BBE14D9A09"))) { // // It's NOT our UUID -- Just return a NULL for error // return(Buffer() {0x0}) } // // Switch based on the function number requested... // switch(ToInteger(Arg2)) { // // Function zero returns a bit-mask of supported functions // case(0) { // // Revision 0 is the only revision presently defined // if(LEqual(Arg1, 0x00)) { // // Functions 0 and 1 are supported // return(Buffer() {0x03}) } break; }

// // Function one returns the Channel Info Package // case(1) { //

 2017 Microchip Technology Inc. DS00002534A-page 5 AN2534

// Revision 0 is the only revision presently defined. // If(LEqual(Arg1, 0x0)) { // // Return channel info with alternating names and // resistor values. // // OEM: TODO: The supplied values ARE ONLY EXAMPLES. // Change to match wiring on platform. // // Each power rail name must be a valid // Windows-defined "Metered Hardware Name" or // the empty string -- it is not validated by // the PAC193X driver. Set the power rail name // to the empty string (i.e. "") to indicate // that a given channel is Private (i.e. not // reported to Windows via the standard EMI // interface). // // Each RSENSE value is expressed in // milliohms. If the channel is not used, set // the RSENSE value to zero. // Name(PBUF, Package() { // // Power // Rail RSENSE // Name Value // "GPU", 10, // Channel 1 "CPU_CORES", 12, // Channel 2 "", 22, // Channel 3 (set to "Private" in // this example) "WIFI", 19 // Channel 4 }) return(PBUF) } break; } } // switch(Arg2) // // Return an error (a buffer with a value of zero) // if we didn't return anything else above // return(Buffer() {0x0}) } // _DSM } // // // End of Example PAC193X ASL // // } //Scope(\_SB)

DS00002534A-page 6  2017 Microchip Technology Inc. AN2534

APPENDIX B: TEST THE PAC193X ACPI INTEGRATION CAUTION: The tools and the process presented in this code into ASL code: appendix are not the only method to integrate the C:\ACPI_MCHP1930>iasl -d *.dat PAC193X ASL, compile and deploy it on a target system. This method does not replace the original Several files will be created on the working folder, one system BIOS firmware from the FLASH and works only for each ACPI table type, having the name of the if Windows® 10 OS on the target system is configured contained ACPI table and the .dsl extension. in Test Mode. The method works only if the target 4. Add the PAC193X ASL code into ACPI SSDT ® system has already Windows 10 installed on it and the • Open the ssdt.dsl file in the text editor, add the user has the possibility to install and run on it the PAC193X ASL sample code and modify it to presented tools. ASL code changes and deployment match the target system architecture. must be done with great care because of the potential risk to cause the Windows® OS crash and the loss of Tip: look for the I2C controller ACPI definition in DSDT data. or SSDT and note the ACPI name. This name is needed to define the PAC193X device I2C connection; see the I2CSerialBus TO DO section from the The Tools Appendix A: “Sample ACPI PAC193X Device • iASL and AcpiDump tools from ACPICA: Definition”. https://acpica.org/downloads/binary-tools 5. Compile the modified SSDT. ® • ASL tool from Microsoft Windows Driver Kit • Use iASL tool to generate the binary SSDT code: (WDK): https://docs.microsoft.com/en-us/windows-hardware C:\ACPI_MCHP1930>iasl ssdt.dsl /drivers/bringup/microsoft-asl- (use the The file ssdt.aml is generated if there is no 64bit or the 32bit version, depending on the target compilation error. system OS type) 6. Load the new ACPI SSDT in the Windows® • BCDEdit utility, installed by default in Windows® registry. 10 Windows® driver provide the ACPI code ® acpi.sys • Notepad utility (installed by default in Windows developers the option to override the original ACPI 10) or any other text editor that runs on the target code from the system FLASH with a different version system saved in the Windows® registry. • Shutdown utility (installed by default in Windows® • Use the ASL tool to save the ACPI table into 10) Windows® registry: The Process C:\ACPI_MCHP1930>asl /loadtable -v ssdt.aml 1. Copy the tools and the sample ASL code to the Note: This command works only from the elevated target system. command prompt. • Create a working folder (say ACPI_MCHP1930) Tip: In case that Windows® registry already contains an and copy the PAC193X ASL sample code in a ACPI code override, it must be "unloaded" before load- simple text file. ing the new version. Provide the option "-d" to the ASL • Copy the ASL and the ACPICA tools in the tool in order to achieve this: working folder or, alternatively, create for them a dedicated Tools folder and put it in the system C:\ACPI_MCHP1930>asl /loadtable -v path. -d ssdt.aml 2. Dump the target system ACPI code. 7. Switch Windows® in Test Mode • Open an elevated command prompt (Administra- The ACPI table override feature presented above is tor command prompt) and change the working enabled only in Windows® Test Mode. directory to the working folder just created. • Use the BCDEdit utility to enable the Test Mode: • Use AcpiDump tool to obtain the system ACPI tables in binary format: C:\ACPI_MCHP1930>bcdedit /set testsigning ON C:\ACPI_MCHP1930>acpidump -b Tip: In order to disable the test mode replace in the Several files will be created on the working folder, one above example ON with OFF. for each ACPI table type, having the name of the 8. Reboot the system contained ACPI table and the .dat extension. • Use the Shutdown utility in order to make sure 3. Disassemble the binary ACPI code that a full power cycle is executed, not affected by • Use iASL tool to disassemble the binary ACPI the Windows® 10 Fast Start facility:

 2017 Microchip Technology Inc. DS00002534A-page 7 AN2534

C:\ACPI_MCHP1930>shutdown -r -t 0 9. Check the Device Manager. At this stage, because there is no driver installed yet, the PAC193X devices should be enumerated by the Windows® Device Manager utility under Unknown Devices category. 10. Install the PAC193X Windows® device driver. Please read and follow the steps presented by the Driver installation section from PAC193X Microsoft® Windows® 10 Driver User Guide. CAUTION: In case that a BIOS upgrade or a BIOS configuration change are needed, it is recommended to: • First, disable the ACPI code override either by unloading the code from Windows® registry (see the step #6) or by turning OFF the test mode (see the step #7); • Repeat the steps listed above, starting with step #2.

DS00002534A-page 8  2017 Microchip Technology Inc. Note the following details of the code protection feature on Microchip devices: • Microchip products meet the specification contained in their particular Microchip Data Sheet.

• Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the intended manner and under normal conditions.

• There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data Sheets. Most likely, the person doing so is engaged in theft of intellectual property.

• Microchip is willing to work with the customer who is concerned about the integrity of their code.

• Neither Microchip nor any other manufacturer can guarantee the security of their code. Code protection does not mean that we are guaranteeing the product as “unbreakable.”

Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.

Information contained in this publication regarding device Trademarks applications and the like is provided only for your convenience The Microchip name and logo, the Microchip logo, AnyRate, AVR, and may be superseded by updates. It is your responsibility to AVR logo, AVR Freaks, BeaconThings, BitCloud, CryptoMemory, ensure that your application meets with your specifications. CryptoRF, dsPIC, FlashFlex, flexPWR, Heldo, JukeBlox, KEELOQ, MICROCHIP MAKES NO REPRESENTATIONS OR KEELOQ logo, Kleer, LANCheck, LINK MD, maXStylus, WARRANTIES OF ANY KIND WHETHER EXPRESS OR maXTouch, MediaLB, megaAVR, MOST, MOST logo, MPLAB, IMPLIED, WRITTEN OR ORAL, STATUTORY OR OptoLyzer, PIC, picoPower, PICSTART, PIC32 logo, Prochip OTHERWISE, RELATED TO THE INFORMATION, Designer, QTouch, RightTouch, SAM-BA, SpyNIC, SST, SST INCLUDING BUT NOT LIMITED TO ITS CONDITION, Logo, SuperFlash, tinyAVR, UNI/O, and XMEGA are registered QUALITY, PERFORMANCE, MERCHANTABILITY OR trademarks of Microchip Technology Incorporated in the U.S.A. FITNESS FOR PURPOSE. Microchip disclaims all liability and other countries. arising from this information and its use. Use of Microchip ClockWorks, The Embedded Control Solutions Company, devices in life support and/or safety applications is entirely at EtherSynch, Hyper Speed Control, HyperLight Load, IntelliMOS, the buyer’s risk, and the buyer agrees to defend, indemnify and mTouch, Precision Edge, and Quiet-Wire are registered hold harmless Microchip from any and all damages, claims, trademarks of Microchip Technology Incorporated in the U.S.A. suits, or expenses resulting from such use. No licenses are Adjacent Key Suppression, AKS, Analog-for-the-Digital Age, Any conveyed, implicitly or otherwise, under any Microchip Capacitor, AnyIn, AnyOut, BodyCom, chipKIT, chipKIT logo, intellectual property rights unless otherwise stated. CodeGuard, CryptoAuthentication, CryptoCompanion, CryptoController, dsPICDEM, dsPICDEM.net, Dynamic Average Matching, DAM, ECAN, EtherGREEN, In-Circuit Serial Programming, ICSP, Inter-Chip Connectivity, JitterBlocker, KleerNet, KleerNet logo, Mindi, MiWi, motorBench, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, MultiTRAK, NetDetach, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, PureSilicon, QMatrix, RightTouch logo, REAL ICE, Ripple Blocker, SAM-ICE, Serial Quad I/O, SMART-I.S., SQI, SuperSwitcher, SuperSwitcher II, Total Endurance, TSHARC, USBCheck, VariSense, ViewSpan, WiperLock, DNA, and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. SQTP is a service mark of Microchip Technology Incorporated in Microchip received ISO/TS-16949:2009 certification for its worldwide the U.S.A. headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona; Gresham, Oregon and design centers in Silicon Storage Technology is a registered trademark of Microchip and India. The Company’s quality system processes and procedures Technology Inc. in other countries. are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping devices, Serial , microperipherals, nonvolatile memory and GestIC is a registered trademark of Microchip Technology analog products. In addition, Microchip’s quality system for the design Germany II GmbH & Co. KG, a subsidiary of Microchip Technology and manufacture of development systems is ISO 9001:2000 certified. Inc., in other countries. All other trademarks mentioned herein are property of their QUALITY MANAGEMENT SYSTEM respective companies. © 2017, Microchip Technology Incorporated, All Rights Reserved. CERTIFIED BY DNV ISBN: 978-1-5224-2157-3 == ISO/TS 16949 ==

 2017 Microchip Technology Inc. DS00002534A-page 9 Worldwide Sales and Service

AMERICAS ASIA/PACIFIC ASIA/PACIFIC EUROPE Corporate Office Asia Pacific Office China - Xiamen Austria - Wels 2355 West Chandler Blvd. Suites 3707-14, 37th Floor Tel: 86-592-2388138 Tel: 43-7242-2244-39 Chandler, AZ 85224-6199 Tower 6, The Gateway Fax: 86-592-2388130 Fax: 43-7242-2244-393 Tel: 480-792-7200 Harbour City, Kowloon China - Zhuhai Denmark - Copenhagen Fax: 480-792-7277 Hong Kong Tel: 86-756-3210040 Tel: 45-4450-2828 Technical Support: Tel: 852-2943-5100 Fax: 86-756-3210049 Fax: 45-4485-2829 http://www.microchip.com/ Fax: 852-2401-3431 India - Bangalore Finland - Espoo support Australia - Sydney Tel: 91-80-3090-4444 Tel: 358-9-4520-820 Web Address: Tel: 61-2-9868-6733 Fax: 91-80-3090-4123 www.microchip.com France - Paris Fax: 61-2-9868-6755 India - New Delhi Tel: 33-1-69-53-63-20 Atlanta China - Beijing Tel: 91-11-4160-8631 Fax: 33-1-69-30-90-79 Duluth, GA Tel: 86-10-8569-7000 Fax: 91-11-4160-8632 Tel: 678-957-9614 France - Saint Cloud Fax: 86-10-8528-2104 Tel: 33-1-30-60-70-00 Fax: 678-957-1455 India - Pune China - Chengdu Tel: 91-20-3019-1500 Germany - Garching Austin, TX Tel: 86-28-8665-5511 Tel: 512-257-3370 Japan - Osaka Tel: 49-8931-9700 Fax: 86-28-8665-7889 Tel: 81-6-6152-7160 Germany - Haan Boston China - Chongqing Fax: 81-6-6152-9310 Tel: 49-2129-3766400 Westborough, MA Tel: 86-23-8980-9588 Japan - Tokyo Germany - Heilbronn Tel: 774-760-0087 Fax: 86-23-8980-9500 Fax: 774-760-0088 Tel: 81-3-6880- 3770 Tel: 49-7131-67-3636 China - Dongguan Fax: 81-3-6880-3771 Germany - Karlsruhe Chicago Tel: 86-769-8702-9880 Tel: 49-721-625370 Itasca, IL Korea - Daegu Tel: 82-53-744-4301 Tel: 630-285-0071 China - Guangzhou Germany - Munich Fax: 630-285-0075 Tel: 86-20-8755-8029 Fax: 82-53-744-4302 Tel: 49-89-627-144-0 China - Hangzhou Korea - Seoul Fax: 49-89-627-144-44 Dallas Tel: 86-571-8792-8115 Tel: 82-2-554-7200 Addison, TX Germany - Rosenheim Fax: 86-571-8792-8116 Fax: 82-2-558-5932 or Tel: 972-818-7423 Tel: 49-8031-354-560 82-2-558-5934 Fax: 972-818-2924 China - Hong Kong SAR Israel - Ra’anana Tel: 852-2943-5100 Malaysia - Kuala Lumpur Detroit Tel: 972-9-744-7705 Fax: 852-2401-3431 Tel: 60-3-6201-9857 Novi, MI Italy - Milan Fax: 60-3-6201-9859 Tel: 248-848-4000 China - Nanjing Tel: 39-0331-742611 Tel: 86-25-8473-2460 Houston, TX Malaysia - Penang Fax: 39-0331-466781 Fax: 86-25-8473-2470 Tel: 60-4-227-8870 Tel: 281-894-5983 Italy - Padova China - Qingdao Fax: 60-4-227-4068 Indianapolis Tel: 39-049-7625286 Tel: 86-532-8502-7355 Philippines - Manila Noblesville, IN Netherlands - Drunen Fax: 86-532-8502-7205 Tel: 63-2-634-9065 Tel: 317-773-8323 Tel: 31-416-690399 Fax: 317-773-5453 China - Shanghai Fax: 63-2-634-9069 Fax: 31-416-690340 Tel: 86-21-3326-8000 Singapore Tel: 317-536-2380 Norway - Trondheim Fax: 86-21-3326-8021 Tel: 65-6334-8870 Los Angeles Tel: 47-7289-7561 China - Shenyang Fax: 65-6334-8850 Mission Viejo, CA Poland - Warsaw Tel: 86-24-2334-2829 - Hsin Chu Tel: 949-462-9523 Tel: 48-22-3325737 Fax: 949-462-9608 Fax: 86-24-2334-2393 Tel: 886-3-5778-366 Romania - Bucharest Tel: 951-273-7800 China - Shenzhen Fax: 886-3-5770-955 Tel: 40-21-407-87-50 Raleigh, NC Tel: 86-755-8864-2200 Taiwan - Kaohsiung Tel: 919-844-7510 Fax: 86-755-8203-1760 Tel: 886-7-213-7830 Spain - Madrid Tel: 34-91-708-08-90 China - Wuhan Taiwan - Taipei New York, NY Fax: 34-91-708-08-91 Tel: 631-435-6000 Tel: 86-27-5980-5300 Tel: 886-2-2508-8600 Fax: 86-27-5980-5118 Fax: 886-2-2508-0102 Sweden - Gothenberg San Jose, CA Tel: 46-31-704-60-40 Tel: 408-735-9110 China - Xian Thailand - Bangkok Tel: 408-436-4270 Tel: 86-29-8833-7252 Tel: 66-2-694-1351 Sweden - Stockholm Fax: 86-29-8833-7256 Fax: 66-2-694-1350 Tel: 46-8-5090-4654 Canada - Toronto Tel: 905-695-1980 UK - Wokingham Fax: 905-695-2078 Tel: 44-118-921-5800 Fax: 44-118-921-5820

DS00002534A-page 10  2017 Microchip Technology Inc. 11/07/16